1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. BrokenHeart

Beiträge von BrokenHeart

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 24. Januar 2025 um 16:21
    Zitat von 2002Andreas

    K.A. welches Skript das bessere ist :/

    Ich denke, dass die beiden Skripte funktional absolut identisch sind. Einmal wurde die Event-Funktion für den Button innerhalb der 'createWidget'-Funktion und das andere Mal außerhalb über die ID document.getElementById('Tooltip-button') hinzugefügt. Das macht keinen Unterschied.

    Außerdem ist bei deiner Version noch die Zeile event.target.ownerGlobal.BrowserCommands.reload();  enthalten. Eigentlich ist ein Reload hier nicht nötig, kann auch kein abweichendes Verhalten feststellen :/. Habe aber jetzt auch nicht intensiv getestet...

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 24. Januar 2025 um 15:37
    Zitat von Boersenfeger

    .. und doppelt gemoppelt macht bekanntlich Ärger. Kurzum, das obige Script gelöscht und jetzt klappt es.

    Beitrag

    RE: Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    […]

    Was mich wundert ist, dass du beim Original-Einstellungsbutton das gleiche Icon wie beim Skript hast. Original sollte es so ausschauen (ohne den Buttonhintergrund).



    Hast du vielleicht irgendein Skript doppelt in deinem chrome-Verzeichnis?
    BrokenHeart
    22. Januar 2025 um 18:39
    Zitat von BrokenHeart

    Hast du vielleicht irgendein Skript doppelt in deinem chrome-Verzeichnis?

    :)


    Zitat von grisu2099

    Kann mir bitte jemand die nötige Änderung für dieses Script verraten? Ich komme einfach nicht auf die richtige Variante... ;(

    Sehe, dass 2002Andreas schon eine Lösung angeboten hat. Aber ich poste es jetzt trotzdem mal...

    Hatte die CSS-Sachen auskommentiert, da es hier so nicht lief. Also wieder rückgängig machen bei dir...

    JavaScript
    (function() {
    
    	if(location.href != 'chrome://browser/content/browser.xhtml') return;
    	try {
    		CustomizableUI.createWidget({
    			id: 'Tooltip-button',
    			type: 'custom',
    			defaultArea: CustomizableUI.AREA_NAVBAR,
    			onBuild: function(aDocument) {
    				var button = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
    				var attributes = {
    					id: 'Tooltip-button',
    					class: 'toolbarbutton-1 chromeclass-toolbar-additional',
    					removable: 'true',
    					label: 'Tooltip aktivieren/deaktivieren',
    					tooltiptext: Services.prefs.getBoolPref('browser.chrome.toolbar_tips') ?
    					'Tooltips anzeigen' : 'Tooltips ausgeblendet'
    				};
    				for (var a in attributes) {
    					button.setAttribute(a, attributes[a]);
    				};
    				
    				button.addEventListener('click', event => {
    					var isEnabled = !Services.prefs.getBoolPref('browser.chrome.toolbar_tips');
    					Services.prefs.setBoolPref('browser.chrome.toolbar_tips', isEnabled);
    					var windows = Services.wm.getEnumerator('navigator:browser');
    					while (windows.hasMoreElements()) {
    						let b = windows.getNext().document.getElementById('Tooltip-button');
    						if (isEnabled)
    						b.setAttribute('tooltiptext', 'Tooltips anzeigen')
    					else
    						b.setAttribute('tooltiptext', 'Tooltips ausgeblendet');
    					};
    				});
    				
    				return button;
    			}
    		});
    	} catch(e) { };
    
    /*
    	var css =
    		'#Tooltip-button[tooltiptext="Tooltips ausgeblendet"] {list-style-image: url("file:///F:/ICONS/FF/T-rot.png")}' +
    		'#Tooltip-button[tooltiptext="Tooltips anzeigen"] {list-style-image: url("file:///F:/ICONS/FF/T-grün.png")}';
    	var stylesheet = document.createProcessingInstruction('xml-stylesheet', 'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"');
    	document.insertBefore(stylesheet, document.documentElement);
    */
    })();
    Alles anzeigen
  • Firefox zeigt bei jedem Start Datei mit Viren an

    • BrokenHeart
    • 24. Januar 2025 um 14:58

    Sören Hentzschel

    Im Prinzip ist das ungefähr vergleichbar mit dem manuellen Übersenden einer Datei an 'VirusTotal'. Vielleicht wird ja auch genau diese Infrastruktur genutzt.

    Zitat von Sören Hentzschel

    In jedem Fall ein Hash der Datei.

    Wenn aber ein Hash übermittelt wird, dann muss folglich auch die gesamte Datei übertragen worden sein. Wenn sie auch nicht angezeigt wird, dann ist sie aber zumindest irgendwo unter Kontrolle des Firefox im Dateisystem (der Arbeitsspeicher könnte ja viel zu klein sein) abgelegt. Damit würde erstens schon ein möglicher, installierter Virenscanner zuschlagen und die Datei sperren/löschen/verschieben und zweitens wäre ja dann doch zu einem bestimmten Zeitpunkt die vollständige Datei auf dem System, was ja nicht gewünscht ist. Ich könnte mir höchstens vorstellen, dass man Google den Downloadlink übermittelt und Google dann seinerseits die Datei herunterlädt und analysiert und nur das Ergebnis zurückliefert. Was aber u.U. sehr viel Zeit in Anspruch nehmen könnte.

    Dann kommt noch der Punkt hinzu, dass es sich auch um ein "False Positive"-Ergebnis handeln könnte. Selber überprüfen kann ich die Datei nicht mehr, da sie ja gelöscht wurde. Beim Defender wird (je nach Konfiguration) die Datei nur in Quarantäne geschickt und ich kann sie von dort auch wiederherstellen lassen. Also muss ich für diesen Download die Einstellungen im Firefox ändern, die Datei nochmal herunterladen und entweder eine zusätzliche Überprüfung durchführen oder sie einfach trotz Warnhinweis verwenden, wenn ich mir ganz sicher bin.

    Insgesamt verstehe ich das Konzept hinter dieser Lösung noch nicht ganz...:/

  • Firefox zeigt bei jedem Start Datei mit Viren an

    • BrokenHeart
    • 23. Januar 2025 um 20:48
    Zitat von Sören Hentzschel

    Doch, Firefox hat eine Malware-Erkennung für Downloads, wie du ja auch im Screenshot des Themenstarters siehst.

    [...]

    Ein Add-on wäre auch technisch überhaupt nicht dazu in der Lage, an dieser Stelle einen Text anzuzeigen. Hier noch ein Screenshot der entsprechenden Firefox-Einstellung:

    Oh :huh:, diese Einstellung ist vollkommen unbemerkt an mir vorübergegangen. Sehe ich jetzt wirklich "bewusst" zum ersten Mal. Ich war immer der Meinung, dass sich Firefox nur auf das Warnen/Blockieren vor "bösartigen" Webseiten beschränkt. Dass die Meldung von einem Add-on kommt, hatte ich nicht geschrieben. (Die Add-ons hatte ich nur erwähnt, weil es ja von vielen Anti-Virus-Programmen zusätzliche Add-ons gibt, die mehr oder weniger sinnvolle Dinge bzgl. Virenabwehr ausführen). Mir war schon klar, dass das vom Firefox stammen muss. Allerdings bin ich von der irrigen Annahme ausgegangen, dass Firefox irgendeine (ominöse) Information vom System(Ereignisanzeige?)/Virenscanner ausliest, um den Grund für das Löschen an den User weiterzugeben.

    Ein paar Fragen dazu:

    Zumindest unter Windows: Warum baut Mozilla noch eine zusätzliche Virenscan-"Instanz" auf ? Man installiert sich normalerweise auch keine zwei Virenscanner. Wo ist der Vorteil, die Datei schon beim Download zu blockieren? Die Anwendung wird sich ja nicht von alleine starten und vorher greift sowieso schon der auf dem System installierte Virenscanner. Welche Meta-Daten (Hash der Datei?) werden für die Abfrage an Google übermittelt?

    Zum eigentlichen Thema:

    Ich bleibe dabei: der TE sollte dringend sein System scannen, wenn auch nach dem Löschen der Download-Chronik beim nächsten Firefox-Start wieder dieser Eintrag vorhanden ist.

  • Mercury 109 Prozent schneller als Firefox

    • BrokenHeart
    • 22. Januar 2025 um 21:25
    Zitat von Drachen

    Wenn man diese Scores auch berücksichtigt, wird immerhin erkennbar, dass hier ziemlich offensichtlich 209 Prozent gemeint sein dürften und die 109 ein Tippfehler sein dürfte. Durchaus peinlich an so einer Stelle, aber wer von uns hat sich noch nie vertippt - und es auch nicht zeitnah bemerkt?

    Stimmt schon was .DeJaVu geschrieben hat. Gerade wenn man sich die Ergebnisse anschaut, dann sieht man, dass es sich ca. um eine Verdopplung (+109%) handelt. Wo siehst du da einen Tippfehler?

    Mich interessieren diese Benchmarks aber herzlich wenig. Nicht weil der Firefox hier bei einem Test schlechter abgeschnitten hat. Damit kann ich leben. Sondern weil sich für mich die Gesamtproduktivität eines Browsers (also wirklich "Real World") eben nicht ausschließlich nach den aufsummierten Ergebnissen einzelner Funktionen bemisst. Und wenn ich schon diese Art von Test durchführe, dann ist es wohl absolut Standard, dass ich mehrere unterschiedliche Benchmarks heranziehe. Sonst besteht eben die Gefahr, dass die Konzentration auf bestimmte Aspekte (JS/GPU/CPU/RAM) die Unterschiede überproportional verstärken. Hat dann nichts mehr mit "Real World" zu tun.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 22. Januar 2025 um 18:39
    Zitat von Boersenfeger

    Button 1 ist vom Script generiert und macht nichts, Button 2 ist der Button aus dem Anpassen-Bereich und funktioniert.

    Was mich wundert ist, dass du beim Original-Einstellungsbutton das gleiche Icon wie beim Skript hast. Original sollte es so ausschauen (ohne den Buttonhintergrund).

    Hast du vielleicht irgendein Skript doppelt in deinem chrome-Verzeichnis?

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 22. Januar 2025 um 18:32
    Zitat von milupo

    In Zeile 339 (oder am Ende von Zeile 338?) des Sammelskriptes ist m. E. ein Akutzeichen (´) zu viel.

    Welches Skript meinst du? Das Skript, was Endor gepostet hat? Das sieht für mich so in Ordnung aus.


    Zitat von Boersenfeger

    Hatte ich gemacht...

    Ok, dann habe ich auch keine Idee mehr. Höchstens noch, alle anderen Skripte zu verschieben oder umzubenennen und ausschließlich mit besagtem Skript testen. :/

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 22. Januar 2025 um 18:30
    Zitat von Boersenfeger

    BTW: Ich starte immer mit der rechten Maustaste neu via Restart-Button-Script und da wird meines Wissens der ScriptCache gelöscht.

    Kommt darauf an welches Skript du nutzt. Wenn du das aus dem obigen Skripts nutzt, dann wird der Cache nur "invalidiert", wenn du die mittlere Maustaste drückst!

    JavaScript
     if (event.button == 1) { 
                                      Services.appinfo.invalidateCachesOnRestart(); 
                                      Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
                                  };

    Also, versuche es mal über about:support.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 22. Januar 2025 um 18:09
    Zitat von Boersenfeger

    Ich habe jetzt den Button mit dem aus der Anpassen-Seite getauscht. Bei mir funktioniert der Code nämlich nicht.

    Vielleicht mal den SkriptCache (StartCache) löschen unter about:support  :/

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 22. Januar 2025 um 17:16
    Zitat von Boersenfeger

    Dieser Schnipsel erzeugt imho einen Button in meiner Zusatz-Toolbar, mit dem ich die Einstellungen aufrufen kann. Der Button ist da, nach Klick drauf tut sich aber nichts. Was ist verkehrt?

    An dem Schnipsel ist nichts verkehrt. Der funktioniert in der aktuellen Nightly einwandfrei. Unschön ist nur die Formatierung/Einrückung in Z.17, da es so aussieht, als wenn der event-Listener innerhalb der 'for'-Schleife residieren würde, was aber nicht der Fall ist.

    Frage mich auch bei diesem Skript: Wozu? Exakt den gleichen Button gibt es standardmäßig schon immer im Firefox selbst - mit exakt der gleichen Funktionalität.. :/

    Edit: Auch im Kontext des gesamten Skripts funktioniert der Button zum Öffnen der Einstellungen. Alle Buttons habe ich jetzt nicht getestet, scheinen aber auch zu funktionieren.

  • UserCSSLoader (2025)

    • BrokenHeart
    • 22. Januar 2025 um 10:02
    Zitat von BarbaraZ-

    Wer mag sich mal meines UserCSSLoader.uc.js Skriptes annehmen?

    Die Version, die du gepostet hast, ist schon bezüglich 'inline-Events' angepasst (siehe Code ab Z. 677) . Solange alles funktioniert, sind keine weiteren Änderungen am Skript notwendig.

    Zitat von BarbaraZ-

    Sind etliche oncommand-Befehle drin.

    Die müssen auch drin bleiben, da die Anpassungen an anderer Stelle im Skript (Z. 677) vorgenommen werden.

  • Firefox zeigt bei jedem Start Datei mit Viren an

    • BrokenHeart
    • 21. Januar 2025 um 11:07

    Ich bezweifle, dass es sich bei der Datei um den 'Chip-Installer' handelt. Die Seite 'chip-cluster.de' wird ja anscheinend auch als attackierend eingestuft. 'Chip-Installer' steht wohl nur im Dateinamen, um zu erklären, dass man hier eine angebliche PDF-Datei mit einer .exe hat und sich nicht wundert.

    Dass sich der Eintrag zu dieser Datei noch in der Chronik befindet - obwohl sie offensichtlich ja schon gelöscht/verschoben wurde - ist normal. Nicht normal ist es, wenn die Datei immer wieder erscheint, obwohl die Liste gelöscht wurde. Das wiederum würde nämlich bedeuten, dass die Datei sich immer wieder selbst herunterlädt und gegebenenfalls vom Virenscanner gleich verschoben/gelöscht wird. :/

    Bitte sich einmal beim genutzten Virenscanner eventuell gefundene Malware anzeigen lassen und vor allem wirklich einen vollständigen Viren-Scan durchführen!


    Zitat von r.samerebs

    [,,,] der Browser hat ja zum Glück auch erfolgreich geschützt.

    Das bezweifle ich auch. Firefox (ohne Add-ons!) erkennt standardmäßig keine Malware. Das ist Aufgabe des Virenscanners. Firefox wird dir höchstens eine Warnung ausgeben, wenn du eine Seite aufrufen willst, die als gefährlich eingestuft ist...

  • Was schaut ihr gerade?

    • BrokenHeart
    • 19. Januar 2025 um 20:23

    "Tötet es mit Feuer bevor es Eier legt!" <X:D

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 19. Januar 2025 um 10:18
    Zitat von Boersenfeger

    Hi, wie in #390 geschrieben

    Das habe ich zwischenzeitlich auch gelesen. Also gehe ich davon aus, dass du das besagte Skript auch nicht mehr nutzt und daher wandert es jetzt in Ablage P bei mir, da es eh noch nicht richtig funktioniert hat . Endor hat ja Alice eine Mail zukommen lassen, vielleicht meldet er sich und hat eine Lösung parat...

  • Mehrzeilige Tableiste für aktuelle Firefox-Versionen

    • BrokenHeart
    • 19. Januar 2025 um 09:34

    Hallo,

    hier funktioniert es. Da muss bei dir noch etwas anderes dazwischenfunken (z.B. : andere Skripte, userChrome.css, Add-ons). Also mal nur mit dem Skript testen...

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 17. Januar 2025 um 19:39
    Zitat von Endor

    Ich schreibe gerade Alice, dem Autor.
    Erledigt:

    :thumbup:

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 17. Januar 2025 um 19:08
    Zitat von Endor

    ja dieser CSS COde gehört dazu:

    Danke Endor  :thumbup:. Hätte ich auch selber drauf kommen können, steht ja auch in der Beschreibung. Ändert sich allerdings nichts am Erscheinungsbild. Vielleicht liegt auch beim Skript noch was im Argen.

    Edit: -----------

    Zitat von Endor

    Standardmäßig ist diese Leiste nicht sichtbar.

    Ich hatte sie zu Testzwecken auf 'true' gesetzt.

    Zitat von Endor

    Sie kann manuell über Ansicht - Symbolleisten [...]

    Oder über einen Button, der sich (bei mir) oberhalb der Download-Leiste befindet.

    ---------

    Werde aber, wenn überhaupt, erst weitermachen, wenn mir Boersenfeger auf meine Frage antwortet. :(

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 17. Januar 2025 um 18:40
    Zitat von Boersenfeger

    Hi siehe #390... es war eine falsche Fährte..

    Was heißt das, wenn ich fragen darf? Verstehe jetzt überhaupt nicht, was du meinst...:/

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 17. Januar 2025 um 18:25
    Zitat von Boersenfeger

    Das in #386 ist allerdings für mich wichtig

    Ich habe mal eine "lauffähige" Version gebastelt. Da waren aber etliche Sachen anzupassen, nicht nur die inline-events. Auch die Erzeugung der toolbar hat sich in der Nightly geändert.

    Allerdings ist die Anzeige total verhunzt. Da stimmt fast nichts mehr. Gibt es noch eine zusätzliche CSS Datei für das Skript? Die müsste aber dann wahrscheinlich auch noch angepasst werden. Aber das wäre mir echt zu viel Aufwand.:/

    Den Schalter für die Download-Leiste habe ich irgendwie falsch eingehängt, müsste man sich auch nochmal anschauen.

    Also den Code nur als "Grundlage" für weitere Anpassungen betrachten:

    JavaScript
    // ==UserScript==
    // @name           ucjsDownloadsStatusModoki.uc.js
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    Downloads Status Modoki
    // @include        main
    // @compatibility  Firefox 117
    // @author         Alice0775
    // @note           DownloadsStatusModoki.uc.js.css Datei, muss in bzw. über userChrome.css geladen  werden!
    // @version        2023/07/17 00:00 use ES module imports
    // @version        2023/06/20 remove Bug 1780695 - Remove Services.jsm
    // @version        2023/06/18 21:00 null
    // @version        2023/05/18 21:00 
    // @version        2022/11/24 21:00 Bug 1802142 - Remove no longer used browser-bottombox
    // @version        2022/11/22 Bug 877389 - [meta] Replace calls to Cu.reportError, etc. from browser code, replace with console.error, etc.
    // @version        2022/11/20 19:00 107+ wip
    // @version        2022/04/01 23:00 Convert Components.utils.import to ChromeUtils.import
    // @version        2022/02/16 Bug 1747422 - Remove preprocessor variable use from downloads CSS
    // @version        2019/12/11 fix for 73 Bug 1601094 - Rename remaining .xul files to .xhtml in browser
    // @version        2019/10/20 12:30 workaround Bug 1497200: Apply Meta CSP to about:downloads, Bug 1513325 - Remove textbox binding
    // @version        2019/09/08 19:30 fix scrollbox
    // @version        2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement
    // @version        2018/10/27 12:00 fix for 64+
    // @version        2018/06/12 21:00 fix for private window mode
    // @version        2018/06/07 12:00 fix file name for history
    // @version        2018/02/10 12:00 try catch error when DO_NOT_DELETE_HISTORY = true
    // @version        2017/12/10 12:00 fix error when DO_NOT_DELETE_HISTORY = true
    // @version        2017/12/10 12:00 remove workaround Bug 1279329. Disable btn while clear list is doing, close button styling for 57.
    // @version        2016/06/10 12:00 modify style independent of font-family
    // @version        2016/06/10 07:00 modify style of close button, fix typo
    // @version        2016/06/10 00:00 Workaround Bug 1279329. adjust some padding
    // @version        2015/05/08 00:00 remove padding due to Bug 1160734
    // @version        2014/03/31 00:00 fix for browser.download.manager.showWhenStarting
    // @version        2013/12/22 13:00 chromehidden
    // @version        2013/12/19 17:10 rename REMEMBERHISTOTY to DO_NOT_DELETE_HISTORY
    // @version        2013/12/16 23:28 fixed initialize numDls
    // @version        2013/12/16 23:24 open only download added
    // @version        2013/12/16 23:10 open only download started
    // @version        2013/12/16 21:20 modify css Windows7 Aero
    // @version        2013/12/16 21:00 modify css
    // @version        2013/12/16 19:30 add autocheck false
    // @version        2013/12/16 18:31 fix pref name
    // @version        2013/12/16 18:30
    // @note
    // ==/UserScript== 
    var ucjsDownloadsStatusModoki = {
      _summary: null,
      _list: null,
    
      get downloadsStatusModokiBar() {
        delete downloadsStatusModokiBar;
        return this.downloadsStatusModokiBar = document.getElementById("downloadsStatusModokiBar");
      },
    
      get toggleMenuitem() {
        delete toggleMenuitem;
        return this.toggleMenuitem = document.getElementById("toggle_downloadsStatusModokiBar");
      },
    
      init: function() {
        if (document.documentElement.getAttribute("chromehidden") !="" )
          return;
    
    
        ChromeUtils.defineESModuleGetters(this, {
          Downloads: "resource://gre/modules/Downloads.sys.mjs",
        });
    
        var style = ` 
          @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); 
    
          #ucjsDownloadsStatusModoki { 
            width: 100%; 
            max-height: 100px; 
            height: 5.5em; 
          } 
         `.replace(/\s+/g, " ");
        var sspi = document.createProcessingInstruction(
          'xml-stylesheet',
          'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'
        );
        document.insertBefore(sspi, document.documentElement);
        sspi.getAttribute = function(name) {
          return document.documentElement.getAttribute(name);
        };
    
    
    	var toolbar = document.createXULElement("vbox");
        toolbar.setAttribute("id", "downloadsStatusModokiBar");
        toolbar.collapsed = false;
    	document.getElementById('navigator-toolbox').parentNode.insertBefore(toolbar, null);
    	
        var browser = toolbar.appendChild(document.createXULElement("browser"));
        browser.setAttribute("disablehistory", true);
        browser.setAttribute("remote", false);
        browser.setAttribute("id", "ucjsDownloadsStatusModoki");
        browser.addEventListener("load", (event) => {ucjsDownloadsStatusModoki.onload(event)});
        browser.setAttribute("src", "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml?StatusModoki");
    	
        var menuitem = document.createXULElement("menuitem");
        menuitem.setAttribute("id", "toggle_downloadsStatusModokiBar");
        menuitem.setAttribute("type", "checkbox");
        menuitem.setAttribute("autocheck", false);
        menuitem.setAttribute("label", "Download Leiste");
        menuitem.setAttribute("checked", false);
        menuitem.setAttribute("accesskey", "D");
    	menuitem.addEventListener("command", function(event){ucjsDownloadsStatusModoki.toggleDownloadsStatusModokiBar()});
        toolbar.parentNode.insertBefore(menuitem, null);
    
        // Ensure that the DownloadSummary object will be created asynchronously.
        if (!this._summary) {
          this.Downloads.getSummary(this.Downloads.ALL).then(summary => {
            this._summary = summary;
            return this._summary.addView(this);
          }).then(null, console.error);
        }
        if (!this._list) {
          this.Downloads.getList(this.Downloads.ALL).then(list => {
            this._list = list;
            return this._list.addView(this);
          }).then(null, console.error);
        }
    
        window.addEventListener("unload", this, false);
      },
    
      uninit: function() {
        window.removeEventListener("unload", this, false);
        if (this._summary) {
          this._summary.removeView(this);
        }
        if (this._list) {
          this._list.removeView(this);
        }
      },
    
      handleEvent: function(event) {
        switch (event.type) {
          case "unload":
            this.uninit();
            break;
        }
      },
    
      toggleDownloadsStatusModokiBar: function() {
        var collapsed = this.downloadsStatusModokiBar.collapsed;
        this.downloadsStatusModokiBar.collapsed = !collapsed;
        this.toggleMenuitem.setAttribute("checked", collapsed);
      },
    
      openDownloadsStatusModoki: function() {
        this.downloadsStatusModokiBar.collapsed = false;
        this.toggleMenuitem.setAttribute("checked", true);
      },
    
      hideDownloadsStatusModoki: function() {
        this.downloadsStatusModokiBar.collapsed = true;
        this.toggleMenuitem.setAttribute("checked", false);
      },
    
      onDownloadAdded: function (aDownload) {
        var showWhenStarting = true;
        try {
          showWhenStarting = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.showWhenStarting");
        } catch(e) {}
        this.numDls = 0;
        if (showWhenStarting) {
          if (this._list) {
            this._list.getAll().then(downloads => {
              for (let download of downloads) {
                if (!download.stopped)
                  this.numDls++;
              }
              if (this.numDls > 0)
                this.openDownloadsStatusModoki(false);
            }).then(null, console.error);
          }
        }
      },
    
      onSummaryChanged: function () {
        if (!this._summary)
          return;
        if (this._summary.allHaveStopped || this._summary.progressTotalBytes == 0) {
          var closeWhenDone = false;
          try {
            closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone");
          } catch(e) {}
          if (closeWhenDone) {
            this.hideDownloadsStatusModoki();
          }
        }
      },
    
    
    
      // chrome://browser/content/downloads/contentAreaDownloadsView.xhtml
      onload: function(event) {
        var doc = event.originalTarget;
        var win = doc.defaultView;
        doc.documentElement.setAttribute("ucjsDownloadsStatusModoki", "true");
    
        var button = doc.createXULElement("button");
        button.setAttribute("label", "Löschen");
        button.setAttribute("id", "ucjs_clearListButton");
        button.setAttribute("accesskey", "L");
        var ref = doc.getElementById("downloadsListEmptyDescription");
        var vbox = doc.createXULElement("vbox");
        var box = vbox.appendChild(doc.createXULElement("hbox"));
        box.appendChild(button);
        box.appendChild(doc.createXULElement("spacer")).setAttribute("flex", 1);
        var textbox = doc.createElementNS("http://www.w3.org/1999/xhtml", "input");
        textbox.setAttribute("id", "downloadFilter");
        textbox.setAttribute("clickSelectsAll", true);
        textbox.setAttribute("type", "search");
        textbox.setAttribute("placeholder", "Suchen...");
        box.appendChild(textbox);
        var closebtn = doc.createXULElement("toolbarbutton");
        closebtn.setAttribute("id", "ucjsDownloadsStatusModoki-closebutton");
        closebtn.setAttribute("class", "close-icon");
        closebtn.setAttribute("tooltiptext", "Download-Leiste schließen");
        box.appendChild(closebtn);
        ref.parentNode.insertBefore(vbox, ref.nextSibling);
        doc.getElementById("ucjs_clearListButton").addEventListener("command", function(event) {
            win.ucjsDownloadsStatusModoki_clearDownloads();
          });
        doc.getElementById("downloadFilter")
                .addEventListener("input", function(event) {
            win.ucjsDownloadsStatusModoki_doSearch(event.target.value);
          });
        doc.getElementById("ucjsDownloadsStatusModoki-closebutton")
                .addEventListener("command", function(event) {
            win.ucjsDownloadsStatusModoki_doClose();
          });
    
    /*
        // xxx Bug 1279329 "Copy Download Link" of context menu in Library is grayed out
        var listBox = doc.getElementById("downloadsListBox");
        var placesView = listBox._placesView;
        if (placesView) {
          var place = placesView.place;
          placesView.place= null;
          placesView.place = place;
        }
    */
        win.ucjsDownloadsStatusModoki_clearDownloads = function ucjs_clearDownloads() {
          var DO_NOT_DELETE_HISTORY = true; /* custmizable true or false */
          var richListBox = doc.getElementById("downloadsListBox");
    
          var places = [];
          function addPlace(aURI, aTitle, aVisitDate) {
            places.push({
              uri: aURI,
              title: aTitle,
              visits: [{
                visitDate: (aVisitDate || Date.now()) * 1000,
                transitionType: Ci.nsINavHistoryService.TRANSITION_LINK
              }]
            });
          }
          function moveDownloads2History() {
            if (DO_NOT_DELETE_HISTORY &&
                !PrivateBrowsingUtils.isWindowPrivate(window)) {
              try {
                for (let element of richListBox.childNodes) {
                  let download = element._shell.download;
                  let aURI = makeURI(download.source.url);
                  // let aTitle = document.getAnonymousElementByAttribute(element, "class", "downloadTarget").value
                  let aTitle = download.target.path;
                  aTitle = aTitle.match( /[^\\]+$/i )[0];
                  aTitle = aTitle.match( /[^/]+$/i )[0];
    
                  let aVisitDate = download.endTime || download.startTime;
                  addPlace(aURI, aTitle, aVisitDate)
                }
              } catch(ex) {}
            }
    
            // Clear List
            richListBox._placesView.doCommand('downloadsCmd_clearDownloads');
    
            if (DO_NOT_DELETE_HISTORY &&
                !PrivateBrowsingUtils.isWindowPrivate(window)) {
              try {
                if (places.length > 0) {
                  var asyncHistory = Components.classes["@mozilla.org/browser/history;1"]
                           .getService(Components.interfaces.mozIAsyncHistory);
                    asyncHistory.updatePlaces(places);
                }
              } catch(ex) {}
            }
          }
          var btn = doc.getElementById("ucjs_clearListButton");
          btn.setAttribute("disabled", true);
          moveDownloads2History();
          btn.removeAttribute("disabled");
    
          // close toolbar
          var closeWhenDone = false;
          try {
            closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone");
          } catch(e) {}
          if (closeWhenDone) {
            top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki();
          }
        };
    
        win.ucjsDownloadsStatusModoki_doSearch = function ucjs_doSearch(filterString) {
          var richListBox = doc.getElementById("downloadsListBox");
          richListBox._placesView.searchTerm = filterString;
        };
    
        win.ucjsDownloadsStatusModoki_doClose = function ucjs_doClose() {
          top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki();
        };
    
      }
    
    }
    ucjsDownloadsStatusModoki.init();
    Alles anzeigen
  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • BrokenHeart
    • 17. Januar 2025 um 12:46
    Zitat von 2002Andreas

    Perfekt, herzlichen Dank dafür :)

    Gerne. Aber sonderlich viel habe ich ja nicht geändert ;)...

    Zitat von lenny2

    Wow, super! :thumbup:

    Der size-Parameter stand ja schon in der Anweisung von #378 - ist nicht von mir. ;)

Unterstütze uns!

Jährlich (2026)

32,8 %

32,8% (213,31 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon