Wie kann ich in einem Script den Pfad des aktuellen Profil-Verzeichnisses ermitteln?

  • moin, moin...

    Ich bin im TB-Forum Fremdgegangen, um meinen TB auch ein wenig aufzuhübschen und so und hab dabei in einem Script folgendes entdeckt:

    JavaScript
    var buttonicon = "trash.png"
    var currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
    style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) + '");',

    Ich hab dann versucht, mit diesem Code in einem meiner Scripts das base64-Icon zu ersetzen.

    War latürnich ein Satz mit "x", bei meinem massivem Halbwissen :blushing:

    Hier mein bisheriger Code, in dem ich eine "absolute" Lösung von milupo verwende:

    Steh ich auf verlorenem Posten oder gibts eine Lösung für mein Füchschen?

    W11 Home 64bit - FF120.x

  • Zeile 24 aus deinem Script als png

    JavaScript
    style: 'list-style-image: url(file:C:/Users/xxx/AppData/Roaming/Mozilla/Firefox/Profiles/xxx/chrome/icon/test.png)',

    dann muß das Bild aber in dein Aktuelles Profil chrome/icon/test.png

    Die xxx mußte selber anpassen wie dein Computerheist und Benutzername deines PRofil

    Grösser als 16x16 px würde ich es nicht machen.

    oder als base64

    JavaScript
    style: 'list-style-image: url(data:image/gif;base64,R0lGODlhEAAQAOZMAP/////MAF06AJhlAJNgAP//AP/lAP/UAJViAP/JANShAJRhAP/OAJRgAOy5AMaSAP/nAMyZAP/IAP/NAOazAP/RAMmVALaAAH5TAJNfAM2aAP/dT//XOv/KAOPOkMeRAP/nhOSxAOu4AP3KAOrTkv/nrv//1c6bAKdyAP/TAP/bPdWsMr6LA7iCALqGALiEAJNeAMCMAP/gcv/eYdGdAP/TEP/mgv/2y//gg/3JAP/ila97AP/aKsWPAJFbAJZgALeBAMiVAPC9AP/rOum2AHlQAP/4zP//z//jPpNdAP/LANixNP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAQABAAAAefgEyCg4SFhoeFDQ0LjIiCCyU5IwEBBAiXCAOEBDohFBREIg6jQgibODQKqgonDz0fPkkwDQMEMhYRERpBMUsAv8C1Mw8uLUAXKwA2EgkJDJoEGy8swAAgCZQMz0wEKigkN8wJHZQBFZrcPDsAHErllBMT6AQ1HkYVKQf6++hMGUgAhhgYSBAChH4/TBwpwLAhw35MMAiYSLFiEUcYmQQCADs=)',

    das ist ein gelbes Ordner Symbol

  • Son Goku:

    Das ist leider keine Antwort auf mein Anliegen ;)

    - base64 will ich doch raushaben

    - eine funktionierende Lösung mit absolutem Path hab ich schon in Funktion

    Mir fehlt AFAICS das Äquivalent für FF zu Zeile 16, wenn da nicht nochn anderer Fehler drinsteckt.

    W11 Home 64bit - FF120.x

  • wenn da nicht nochn anderer Fehler drinsteckt.

    Doch, tut es...

    Zeile 15 :

    var toolbarbutton = document.createElement('toolbarbutton');

    mußt du ändern in:

    Code
    var toolbarbutton = document.createXULElement('toolbarbutton');

    Wenn du das Skript im Firefox verwenden willst, muß auch Zeile 12 geändert werden - da müssen allerdings die Skript-Könner ran, dafür reicht mein Halbwissen nicht... ;)

  • Ich habs jetzt mal andersrum versucht und nicht das TB-Script versucht anzupassen, sondern das funktionierende FF-Script umzubauen.

    Der Code funktioniert teilweise: es wird kein Icon angezeigt, aber wenn ich auf die leere Stelle Klick, beendet sich FF.

    Der Knackpunkt muß IMHO beim Erstellen des URL-Strings liegen:

    JavaScript
    var buttonicon = "beenden.png"
    var currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
    aNode.style.listStyleImage = 'url("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) + ")';

    "currentProfileDirectory" wird anscheinend nicht gefüllt, weil etwas aus dem TB-spezifischen Code in FF so nicht ansprechbar ist.

    Irgendwer mit einem Vorschlag?

    Gibts eine Möglichkeit, daß ich mir irgendwie (z.B. in einem kleinen Fenster/Alert) einen String anzeigen lassen kann?

    W11 Home 64bit - FF120.x

  • Hier mein bisheriger Code, in dem ich eine "absolute" Lösung von milupo verwende:

    Steh ich auf verlorenem Posten oder gibts eine Lösung für mein Füchschen?

    Ja, was denn nun, für Thunderbird oder für Firefox? So lässt sich das Skript nur in Thunderbird verwenden. Für Firefox musst du mehr ändern als die Grafik.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Ja, was denn nun, für Thunderbird oder für Firefox?

    Falls ich mich wirklich so unmöglich ausgedrückt habe:

    Ich habe im FF ein Script für einen "Beenden-Button" mit absolutem Pfad zum Icon nach Vorbild/Hilfe von Dir.

    Das wollte ich für meinen TB auch haben und habs hinbekommen.

    Dann hat jemand im TB-Forum ein Script veröffentlicht, wo nicht ein absoluter Pfad zum Icon im Code steht, sondern der Pfad mit

    var currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); ermittelt wird.

    Das will ich als 3. alternative (includiertes Base64/absoluter Pfad/current path) in meinem FF-script zum Laufen bekommen.

    Und wie #8 zeigt, bin ich da schon ein Stück weitergekommen und wenn ich den Alert gleich drin hab, bin ich wieder einen Schritt weiter.

    W11 Home 64bit - FF120.x

  • Ich hatte nur das Skript aus Beitrag #1 zur Verfügung. Da schreibst du "gibts eine Lösung für meine Füchschen?". Da das ein Thunderbird-Skript war, ging ich davon aus, dass du das ganze Skript für Firefox angepasst haben willst. Es war mir nicht klar, dass du ein Firefox-Skript an Thunderbird angepasst hast. Deinen Beitrag #8 kannte ich da noch gar nicht.

    Du konzentrierst dich jetzt auf die Grafik. Hast du denn beachtet, dass du für Firefox messenger.xul durch browser.html ersetzen musst und, wie grisu2099 schon schrieb, createElement durch createXULElement? Da kannst du für deine Grafik tricksen wie du willst, das Skript funktioniert sonst nicht.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Wie schon geschrieben, hab ich mit dem Script aus #8 weitergemacht und das sieht mittlerweile so aus:

    Ergebnis: die Fläche fürs Icon ist vorhanden und ein Klick darin beendet FF, aber das Icon wird nicht angezeigt.

    Im Alert sieht der Pfad genauso aus, wie der String in milupos absoluter-Pfad-Lösung.

    Wenn ich die neuen Zeilen (30-33) auskommentiere und Zeile 27 aktiv schalte, ist das Icon da.

    Wo überseh ich was?

    Ich :sleeping: das jetzt mal und guck mal, was ich nacher verschlimmbessern kann.

    W11 Home 64bit - FF120.x

  • zum einen ist currenticon nirgendwo definiert. ausserdem fehlen mehrere semikola und anführungszeichen.

    ersetze

    Code
    var beenden_icon = ("file:" + "///" + currentProfileDirectory + "/chrome/icons/beenden.png")
    alert(beenden_icon)
    aNode.style.listStyleImage = 'url(currenticon)';

    durch

    Code
    var beenden_icon = 'url("file:///' + currentProfileDirectory + '/chrome/icons/beenden.png")';
    alert(beenden_icon);
    aNode.style.listStyleImage = beenden_icon;
  • moin, moin..

    Ich bin irgendwie zudummzumzum, beim nächsten Script klappts schonwieder nicht:(

    Selbe Symptome: Platz da, Klick erzeugt Neustart, Icon abwesend.

    Wenn ich die Base64-Zeile (31) benutze und Zeile 32 auskommentiere, isses wieder da.

    Der Code:

    Wo/wie hab ichs dieses mal verbasselt?

    W11 Home 64bit - FF120.x

  • Nur eine Vermutung: Schreibe in Zeile 32 list-style-image durchweg klein. JavaScript unterscheidet zwischen Groß- und Kleinschreibung.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Übrigens: Ich bin mit Babynahrung weder verwandt noch verschwägert. ;)

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress

  • Für den Schreibfehler bei deinem Namen: Sorry, war keine Absicht, paß ich in Zukunft noch mehr auf, auch in meinen Kommentaren.

    list-style-image hab ich korrigiert, aber da muß noch ne andere Macke versteckt sein.

    Immmer noch ne leere, Funktionierende Fläche ohne Icon.

    Ich hab das .jpg mal vorsichtshalber in ein 16x16x256er .png gewandelt und versucht - Satz mit X.

    Als nächstes probier ich es jetzt mal mit dem Zwischenschritt über deine Lösung mit dem "absolutem" Path.

    Ich hab die Vermutung, irgendwas mit den ganzen " und ' stimmt nicht...

    W11 Home 64bit - FF120.x

  • Ich hab jetzt einiges hin und her probiert:

    Wenn ich die von mir schon anderwertig eingesetzte Lösung mit einem Absoluten Pfad (von milupo ;) ) verwende, ist alles patetti.

    Wenn ich vor dem "var probs" die "var currentProfileDirectory" befülle, kann ich currentProfileDirectory anscheinend nicht in der style:-Zeile in dem "probs"-Konstrukt verwenden.

    Da mein JavaScript-Vermögen minimal ist, muß ich hier wohl die Segel streichen.

    W11 Home 64bit - FF120.x

  • Mach es mal so wie im Thunderbird-Skript aus Beitrag #1: Weise wie dort in Zeile 17 der Variable restart_icon lediglich den Dateinamen der Grafik zu und mache es dann wie dort in Zeile 24 in der Zeile mit style: Nur dann eben mit restart_icon statt buttonicon.

    Übersetzer für Obersorbisch und Niedersorbisch auf pontoon.mozilla.org u.a. für Firefox, Firefox für Android, Firefox für iOS, Firefox Klar/Focus für iOS und Android, Thunderbird, Pootle, Django, LibreOffice, LibreOffice Onlinehilfe, WordPress