Noch mal eine Frage in die Runde!
Warum nicht das PowerShell-Skript?
Einmal ausgeführt und der FF ist JavaScript fähig.
Es könnte so einfach sein.
Noch mal eine Frage in die Runde!
Warum nicht das PowerShell-Skript?
Einmal ausgeführt und der FF ist JavaScript fähig.
Es könnte so einfach sein.
Der Ordner chrome ist im richtigen Wurzelordner
Und die Änderungen im Installationsordner!?
ich habe wie auf der github Seite beschrieben die Dateien heruntergeladen, entpackt und in die Ordner gesetzt.
Den Code von deinem Beitrag kommt dann wo rein? In die UserChrome.js?
In die UserChrome.js?
Nein, sondern in den Ordner chome.
Du musst dir selber eine Datei erstellen mit einem Editor.
Dieser Datei gibst du einen Namen woraus für dich ersichtlich ist was sie macht.
Beispiel:
Ersten Tab überschreiben.uc.js
In diese Datei fügst du dann den obigen Text aus dem Skript ein.
Speichern und Neustart vom Firefox danach.
achso jetzt ist es mir klar, vielen Dank euch!
achso jetzt ist es mir klar
Funktioniert es denn jetzt?
danke der Nachfrage: Ja es geht.
Wenn man es richtig macht, ist es ein geringer Aufwand mehrere Dateien in zwei Ordner zu verschieben um ein Tab weg zu bekommen
Auch wenn die Marktanteile von Firefox weiter abnehmen bleibt es durch die Anpassungsfähigkeit mein Browser. Aus voller Überzeugung.
Wenn man es richtig macht, ist es ein geringer Aufwand mehrere Dateien in zwei Ordner zu verschieben um ein Tab weg zu bekommen
und es gibt soviele schöne Scripte die du ab jetzt nutzen kannst!
Welche empfiehlst du?
Meine ausdrückliche Empfehlung: Verzichte, worauf du verzichten kannst. Wenn du erst fragen musst, brauchst du auch nichts. Einen Bedarf sollte man nicht künstlich erzeugen.
Das mit den Scripts mag eine schöne Sache sein, wenn man einen Anwendungsfall bedienen möchte, den eine Erweiterung nicht bedienen kann. Aber es handelt sich um keine offiziell unterstützte Form der Anpassung, ist anfällig für Inkompatibilitäten nach Firefox-Updates und es werden interne Firefox-Schnittstellen genutzt und teilweise überschrieben, was unbekannte Konsequenzen für die Sicherheit haben kann. Zumal im Gegensatz zu Erweiterungen auch der Code der Scripts diesbezüglich von niemandem überprüft wird. Je weniger du dich davon abhängig machst, desto besser für dich. Manche Nutzer in diesem Forum müssen gefühlt jeden zweiten Monat nach Hilfe fragen, weil sie so viele Scripts nutzen und wieder mal ein Script nicht mehr funktioniert. Im schlimmsten Fall ist nach einem einzigen Update direkt eine zweistellige Zahl an Scripts nicht mehr lauffähig, weil es wieder eine grundlegende Änderung gab, von der viele Scripts betroffen sind.
Welche empfiehlst du?
Dies macht optisch was her, ist aber überflüssig und dient nur als Beispiel.
Ansonsten gehe ich konform mit:
Verzichte, worauf du kannst.
// JavaScript Document
// LoadingBar.uc.js
// Location Bar Enhancer5.1; Loading Bar0.3.0
// Firefox 140
(function loadbar(){
if (location.href !== 'chrome://browser/content/browser.xhtml') return;
var cssStr = `
#urlbar-background {
background-image: repeating-linear-gradient(-60deg, rgba(71,71,71,0), rgba(74,74,74,0) 4px, rgba(74,74,74,1) 4px, rgba(74,74,74,1) 8px), linear-gradient(to right, rgba(204, 82, 0,0) 0%, rgba(204, 82, 1) 100%);
background-size:0 0;
background-repeat:repeat-x, no-repeat;
transition: background-size 0ms ease-in-out 0ms;
}
#urlbar-background:not([style="background-size: 0% 100%;"]) { transition: background-size 300ms ease-in-out 0ms;
animation: progress-bar-stripes 5000ms linear infinite;
}
@keyframes progress-bar-stripes {
from {
background-position: 0 0;
}
to {
background-position: 470px 0;
}
}
`.replace(/\s{2,}|\r|\n/,"");
var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
var mainW = document.getElementById("main-window");
document.insertBefore(style, mainW);
function main(window) {
var {document, gBrowser} = window;
function $(id) { return document.getElementById(id) };
var urlbar = $("urlbar-background");
let pageProgress = 0;
let async = makeWindowHelpers(window).async;
var LoadingBar = {
listener: {
onChangeTab: function(e) {
urlbar.style.backgroundSize = '0% 100%';
pageProgress = 0;
},
onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
if (gBrowser.contentDocument === aBrowser.contentDocument) {
var val = (curTotalProgress-1)/(maxTotalProgress-1);
pageProgress = val;
urlbar.style.backgroundSize = (100*val) + '% 100%';
if (val > 0.9)
async(function() {
if (pageProgress > 0.95)
urlbar.style.backgroundSize = '100% 100%';
}, 1000);
}
},
onStateChange: function() {
if (pageProgress > 0.95){
async(function() {
urlbar.style.backgroundSize = '0% 100%';
pageProgress = 0;
}, 1000);
}else{
urlbar.style.backgroundSize = '0% 100%';
}
}
}
};
gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
gBrowser.addTabsProgressListener(LoadingBar.listener);
unload(function() {
gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
gBrowser.removeTabsProgressListener(LoadingBar.listener);
}, window);
}
watchWindows(main, "navigator:browser");
function runOnLoad(window, callback, winType) {
window.addEventListener("load", function() {
window.removeEventListener("load", arguments.callee, false);
if (window.document.documentElement.getAttribute("windowtype") == winType)
callback(window);
}, false);
}
function runOnWindows(callback, winType) {
function watcher(window) {
try {
callback(window);
}
catch(ex) {}
}
let browserWindows = Services.wm.getEnumerator(winType);
while (browserWindows.hasMoreElements()) {
let browserWindow = browserWindows.getNext();
if (browserWindow.document.readyState == "complete")
watcher(browserWindow);
else
runOnLoad(browserWindow, watcher, winType);
}
}
function watchWindows(callback, winType) {
function watcher(window) {
try {
callback(window);
}
catch(ex) {}
}
runOnWindows(callback, winType);
function windowWatcher(subject, topic) {
if (topic == "domwindowopened")
runOnLoad(subject, watcher, winType);
}
Services.ww.registerNotification(windowWatcher);
unload(function() { Services.ww.unregisterNotification(windowWatcher) });
}
function unload(callback, container) {
let unloaders = unload.unloaders;
if (unloaders == null)
unloaders = unload.unloaders = [];
if (callback == null) {
unloaders.slice().forEach(function(unloader) { unloader() });
unloaders.length = 0;
return null;
}
if (container != null) {
container.addEventListener("unload", removeUnloader, false);
let origCallback = callback;
callback = function() {
container.removeEventListener("unload", removeUnloader, false);
origCallback();
}
}
function unloader() {
try {
callback();
}
catch(ex) {}
}
unloaders.push(unloader);
function removeUnloader() {
let index = unloaders.indexOf(unloader);
if (index != -1)
unloaders.splice(index, 1);
}
return removeUnloader;
}
function makeWindowHelpers(window) {
let {clearTimeout, setTimeout} = window;
function async(callback, delay) {
delay = delay || 0;
let timer = setTimeout(function() {
stopTimer();
callback();
}, delay);
function stopTimer() {
if (timer == null)
return;
clearTimeout(timer);
timer = null;
}
}
return {
async: async,
};
}
})();
Alles anzeigen
vielen Dank Sören dass du um mich besorgt bist und mir deine Bedenken mitgeteilt hast, die mich überzeugt haben. Nachdem es für mich ein Kampf war per Script den leeren Tab beim Öffnen von Links war, sehe ich davon ab weitere Scripte zu benutzen.