Lösung: Firefox 8.0, userChrome.js und Cache von Skripten

  • Moin,

    es deutet einiges darauf hin, dass (gewisse?) userChrome-Skripte in einem Cache abgelegt werden und somit Änderungen von Skripten nach Neustart des Browsers (Firefox 8.0) nicht sichtbar werden.

    Erste Erkenntnisse gab es dazu unter https://www.camp-firefox.de/forum/viewtopi…=763862#p763862


    Auf http://forums.mozillazine.org/viewtopic.php?p=11288699#p11288699 (den Beitrag am besten komplett lesen) findet man unter anderem das hier:

    Zitat

    And there seems to be a bug in the extension. Even when I comment out the script in chrome/userchrome.js , it still does execute. Or when I update it, it does not pick up the new code. I found out an old cached copy of it is executing from startupcache/startupcache.4.little . When I delete the file, the script does update.


    Ich kann bisher nicht bestätigen, dass das Löschen von startupCache etwas bringt (und rate erst einmal davon ab). Eine einfach Methode, die Änderung aktiv werden zu lassen:


    [Edit]
    Ergänzung, damit man hier nicht lange suchen muss:

    Methoden, um den Skriptcache zu löschen:

    a.) Einsatz von Skripten, die das machen können:
    https://github.com/ardiman/userCh…ddrestartbutton
    https://github.com/ardiman/userCh…/restartfirefox
    https://github.com/ardiman/userCh…rtfirefoxbutton

    b.) Firefox mit entsprechendem Parameter starten (Beispiel):
    "C:\Programme\Mozilla Firefox\firefox.exe" -purgecaches

    c.)
    - Skript anpassen
    - userChrome.js deaktivieren
    - Firefox neu starten
    - userChrome.js aktivieren
    - Firefox neu starten
    [/Edit]

  • Also verdichten sich die Hinweise dahingehend. Nur ist dat so, dass ich persönlich bis vor kurzem, also bis zum Fuchs 7 solches Verhalten nicht beobachten konnte und behaupte mal einfach, ne Menge mit der Erweiterung und Scripten zutun zu haben.
    Da die Erweiterung schon seit langem in der aktuellen 1.4 Version ist, sieht das zumindest bis jetzt so für mich aus, dass der neue Fuchs 8 auf einmal irgendwie anders mit der/den genannten Dateien umzugehen zu scheint.

    Wir haben mit Kamerad Mithrandir wahrscheinlich noch ein solches Script ausmachen können. Es ist aber ein brand neues und noch in der Testphase. Allerdings ist es ein *js-Script, somit dürfte das mit der Verarbeitung des Fuchses mit XUL wohl nix zutun haben.

  • Ich bin ja kein Fachmann, also kann ich nur schreiben was mir hier so aufgefallen ist.
    Es muß einen Unterschied zwischen der userCrome.js 1.2 zu 1.4 geben bei der Verarbeitung von Scripten.
    In meinem Hauptprofil nutze ich deswegen noch die 1.2 weil ich ein Script habe was in 1.4 nicht richtig funktioniert.
    Und zwar dieses:


    (Ich glaube das war von pcinfarkt mal und ich habe es noch etwas verändert für mich. Dank an dieser Stelle mal dafür)

    In der Version 1.2 werden die Leerfelder zwischen Firefox8.0... desigend....und dem Datum angezeigt, in der 1.4 werden irgendwelche Zeichen dafür eingesetzt.
    Da ich leider nicht weiß wie man Leerfelder ausser per alt + 0160 erstellt mach ich kein Update auf die 1.4 hier.

    Ob das jetzt Einfluß auf das ändern vom besagten Script externalApplications hat kann ich allerdings nicht sagen.
    Aber evtl. hilft es euch ja weiter :-??

  • Hallo, zusammen !
    @ Mithrandir: Zu Testzwecken habe ich das mal in einem anderen Profil des FF 8.0 (default Theme) gemacht; das hat so geklappt. Das Script funktioniert. :klasse:


    Code
    Ich kann bisher nicht bestätigen, dass das Löschen von startupCache etwas bringt (und rate erst einmal davon ab). Eine einfach Methode, die Änderung aktiv werden zu lassen:
    
    
    - Skript anpassen
    - userChrome.js deaktivieren
    - Firefox neu starten
    - userChrome.js aktivieren
    - Firefox neu starten

    Zur Info an die Fachleute. :klasse:

    Firefox 122 + Win 11 Pro - ;):thumbup:

  • Wenn man die Erweiterung ersetzt und anstelle von userChrome das hier nimmt: https://addons.mozilla.org/de/firefox/addon/uc/ entfällt das Cachingproblem.

    Allerdings habe ich mit der neuen Erweiterung das Problem, dass ich immer nur eine xul-Datei zum Laufen bringe. Das Einbinden von mehreren xuls klappt hier nicht. [Edit]Ich frage mich, ob ich dazu einen neuen Thread im Erweiterungsbereich anlegen sollte, oder wir das hier diskutieren.[/Edit]

  • Übrigens gibt es noch eine Methode, den Cache zurückzusetzen.

    Man erweitere die Verknüpfung zum Firefox um den Parameter "purgecaches". Beispiel:

    Code
    "C:\Programme\Mozilla Firefox\firefox.exe" -purgecaches


    Bei der anderen Methode unter http://forums.mozillazine.org/viewtopic.php?p=11154173#p11154173 habe ich noch nicht ganz kapiert, wo ich sie am besten einsetze.
    Jedenfalls hat

    Code
    let XRE = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
    XRE.invalidateCachesOnRestart();


    in der userChrome.js noch nicht geholfen.

  • Die zweite Methode

    Code
    let XRE = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
    XRE.invalidateCachesOnRestart();


    habe ich nun in https://github.com/ardiman/userCh…ddrestartbutton untergebracht. Falls dieses Skript bereits eingebunden war, muss der Cache einmal manuell (s. oben) zurückgesetzt werden. Danach hilft ein Rechts- oder Mittelklick auf "Datei/Neustart".

    Für mich ist damit das Problem gelöst.

  • Boersenfeger: Das sollte möglich sein - ich hab aber immer etwas Probleme mit den "einzeiligen" Anweisungen, wie sie bei dem Skript/Button hinterlegt sind (ich bin auch nur ein Hobbyprogrammierer, was JavaScript angeht). Kann also etwas dauern, bis ich es hinbekomme.

  • Ging doch schneller als erwartet. Restart Firefox Button (Klick mich) kann nun auch per Mittel- oder Rechtsklick den Neustart mit Löschen des Caches ausführen. Der "normale" Linksklick führt nur Neustart ohne Leeren des Caches durch.

  • @Gevatter: Danke für den Beifall und deine Antwort zur Alternative "uc". Zum userChrome.js-Update: der mozillazine-Thread und die bugreports zu dem Thema lesen sich nicht so, als ob die Entwickler daran etwas ändern wollten.

  • So wie ich dem ganzen als Ahnungsloser folgen kann, scheint es zumindest bis jetzt so zu klingen.
    Wenn der chrome.js Schrauber nicht so wirklich auf alice´s Vorschläge reagieren wird (kann ich mir aber auf Dauer ehrlich gesagt nicht so richtig vorstellen), dann wird vllt. alice selber was zu basteln. Dem "wilden" traue ich dat sofort zu ;)

  • :-??
    Ich habe hier ein Script, das im Unterordner Chrome als Restart.uc.xul abgelegt ist.

    Dies erzeugt bei mir [attachment=0]20-11-2011_124618.png[/attachment] diesen Button. Damit starte ich Firefox per Linksklick neu.
    Welches Script das jetzt ist und wieso ich das umbenannt habe, keine Ahnung. :oops:
    Kann man die Cache-Geschichte da reinkriegen...?

  • Hast du meinen gestrigen Beitrag von 20:46:47 Uhr überlesen? Die neue Version von Restart Firefox Button (Klick mich) auf GitHub kann das jetzt auch.

  • Die Skripte unterscheiden sich natürlich, weil ich deinen Wunsch gestern umgesetzt habe (der Code, den du auf der 1. Seite gepostest hast ist der von der ursprünglichen Version)... Probiere es doch einfach mal aus bzw. kopiere und teste:

    https://raw.github.com/ardiman/userCh…oxButton.uc.xul

    In der neuen Version wird

    Code
    onclick="restarter.restart(event);


    dem Button zugewiesen.

    Die restart-Funktion berücksichtigt dann Mittel- und Rectsklick (Cache löschen), danach findet auf jeden Fall (Linksklick, Mittel- und Rechtsklick) ein Neustart statt

    Code
    restart : function (e)
      {
        if (e.button!=0) {
          let xRE = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
          xRE.invalidateCachesOnRestart();
        }
        var boot=Components.classes['@mozilla.org/toolkit/app-startup;1'].getService(Components.interfaces.nsIAppStartup);
        boot.quit(Components.interfaces.nsIAppStartup.eForceQuit|Components.interfaces.nsIAppStartup.eRestart);
      }


    BTW: ich habe hier zwei aktualisierte Skripte verlinkt. Einmal ist es das mit dem Menüeintrag, das andere ist das mit dem Button (also "deins").

  • Ich habe den Fehler gefunden. Wenn ich von GitHub ein Script per Rechtsklick herunterlade, habe ich falschen Code drin. Offensichtlich wird die Datei als .htm gespeichert, obwohl ich im Download-Dialog "alle Dateien" anklicke. Dadurch ist der Code natürlich gaga. Nach kopieren und einfügen funktionieren nun beide Scripte wie gewünscht. An dieser Stelle nochmal ein DANKE an dich und an den dunklen Herrscher... :P