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. Mira_Belle

Beiträge von Mira_Belle

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 25. Juli 2023 um 14:04

    Also ich habe da jetzt dieses Konstrukt.

    JavaScript
          if (process.isRunning) {
             return;
          } 
          else {
             process.init(file);
             process.run(false, arguments, arguments.length); // Profil wird bestätigt
          }

    Nur bei der if-Anweisung feht etwas!

    Die Abfrage, ob die Instanz, bzw. der Prozess schon läuft.

    Da hänge ich z.Z. und komme nicht weiter.

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 25. Juli 2023 um 13:34

    Also ich habe da so eine Idee, wie es funktionieren könnte!

    Recht weit unten gibt es eine Zeile, da steht:

    process.init(file);

    Direkt nach dieser Zeile müsste so ein if-else Anweisung stehen.

    In etwa so:

    Code
    if (processStarted){
           ('Instanz wurde bereits gestartet. Der Aufruf wird abgebrochen.');
           return;
         } else if (process.run(false, arguments, arguments.length); // Profil wird bestätigt
       }

    Das Beispiel funktioniert so natürlich nicht, aber es soll zeigen, wie ich denke, dass es funktionieren könnte.

    Könnte mir da jemand helfen?

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 25. Juli 2023 um 12:49

    Ich bitte um weitere Tests :!:

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 25. Juli 2023 um 12:47
    Zitat von Horstmann

    Scheint perfekt zu funktionieren, du bist die Beste, herzlichen Dank! :) :thumbup:

    Gar nicht so übel für jemanden die von Javascript keine Ahnung hat (Zitat). ;)

    ChatGPT, YOU.com, viel Recherche und Geduld, wie beim Puzzeln, machen es manchmal möglich.

    Du glaubst gar nicht, wie viel Codeschnipsel ich gesammelt, kombiniert und getestet habe,

    bis da was bei rumkam.

    Von Vorteil ist natürlich auch, wenn man so ein klitzekleines bisschen den Code lesen und verstehen kann.

    Was für ein Glück hatte ich vor Äonen von Jahren mal eine Informatikschulung an der Volkshochschule

    im Abendlehrgang.

    Ich finde das spannend, aber leider habe ich mich nie wirklich dazu durchringen können,

    eine Programmiersprache zu erlernen.

    In der Schule erlernte ich vor vielen, vielen Jahren mal BASIC, für meinen Taschenrechner, war toll.

    Und viel später kam ich mal mit Assembler in Berührung, auch toll.

    UND ich Puzzle sehr gerne. :D

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 25. Juli 2023 um 11:37

    Danke, @ all.

    Zitat von Horstmann

    Super, dankeschön !! :thumbup: :)

    Nur 2 Dinge:

    Der Dateipfad für Mac User, einfach die entsprechende Zeile austauschen:

    Benutzt auf High Sierra, FX im Standard Installationsordner.

    JavaScript
          file.initWithPath("/Applications/Firefox.app/Contents/MacOS/firefox");

    Und ein kleiner Haken: wenn man das zusätzliche Profil schon offen hat, und den Button versehentlich nochmal drückt, gibt es eine Fehlermeldung.

    Wenn man den normalen Button in about:profiles mehrfach drückt, gibt es kein Problem, es geht nur ein neues Fenster auf im zusätzlichen Profil.

    Alles anzeigen

    Danke für die Ergänzung, damit auch Mac User was von dem Skript haben.

    Was die Fehlermeldung angeht, ja ist bei Windows auch so.

    Das hat wohl damit zu tun, dass ich ja von hinten erst durchs Auge und dann erst ins Knie ....

    Also, es ist die Aufrufmethode!

    Kann man wunderbar nachstellen, wenn man eine Verknüpfung, mit den entsprechenden Parametern, auf dem

    Desktop anlegt. Auch da kommt die gleiche Fehlermeldung.

    Bitte Testen :!:

    Nun sollte nichts mehr passieren, wenn der Button ein zweites Mal betätigt wird.

    JavaScript
    // JavaScript Document
    // QuickProfilesChangesButton.uc.js
    // Source file https://www.camp-firefox.de/forum/thema/136664/?postID=1231402#post1231402
    
    (function() {
    
       let profilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')) // Profilpfad zum Ordner des Symbols
       let buttonIcon = "XXX.xxx" // Name & Dateiendung des anzuzeigenden Symbols. Hier "XXX.xxx" das eigene Symbol inkl. Dateiendung eintragen
    
       let instanceStarted = false; // Variable, um den Status der Instanz zu verfolgen
    
       if (!window.gBrowser) return;
       
         CustomizableUI.createWidget({
           id: 'aboutprofiles-button',
           defaultArea: CustomizableUI.AREA_NAVBAR,
           label: 'Quicklink: about:profile',
           tooltiptext: 'Quicklink:\nabout:profiles',
           onCommand: onCommand,
           onCreated: function(button) {
             button.style.listStyleImage = "url('" + profilePath + buttonIcon + "')";
             }
          });
       
       function onCommand() {
    
          // Prüfen, ob die Instanz bereits gestartet wurde
          if (instanceStarted) {
             console.log('Instanz wurde bereits gestartet. Der Aufruf wird abgebrochen.');
             return;
          }      
          instanceStarted = true; // Markieren, dass die Instanz gestartet wurde
    
          let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
          var arguments = ["-no-remote", "-P", "Standard-Benutzer"] // Profil wird ausgewählt
          file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // Pfad zur Firefox-Installation
    //       file.initWithPath("/Applications/Firefox.app/Contents/MacOS/firefox"); // Pfad zur Firefox-Installation, Dateipfad für Mac User
          let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); 
          process.init(file);
          process.run(false, arguments, arguments.length); // Profil wird bestätigt
       }
    })();
    Alles anzeigen
  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 25. Juli 2023 um 07:19

    Geschafft!

    Nichts ist unmöglich!

    Was nicht passt, wird passend gemacht!
    .
    Ich habe gewonnen :!:
    .

    Warum ich so austicke, ich habe es geschafft, ob wohl ich von JavaScript nicht wirklich 'ne Ahnung habe!!

    Hier das Skript, das erst einen Button erstellt und dann, wenn man ihn betätigt, eine weitere Instanz

    mit einem bestimmten Profil startet.

    JavaScript: QuickProfilesChangesButton.uc.js
    // JavaScript Document
    // QuickProfilesChangesButton.uc.js
    // Source file https://www.camp-firefox.de/forum/thema/136664/?postID=1231379
    
    (function() {
    
       let profilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')) // Profilpfad zum Ordner des Symbols
       let buttonIcon = "XXX.xxx" // Name & Dateiendung des anzuzeigenden Symbols. Hier "XXX.xxx" das eigene Symbol inkl. Dateiendung eintragen
    
       if (!window.gBrowser) return;
       
         CustomizableUI.createWidget({
           id: 'aboutprofiles-button',
           defaultArea: CustomizableUI.AREA_NAVBAR,
           label: 'Quicklink: about:profile',
           tooltiptext: 'Quicklink:\nabout:profiles',
           onCommand: onCommand,
           onCreated: function(button) {
             button.style.listStyleImage = "url('" + profilePath + buttonIcon + "')";
             }
          });
       
       function onCommand() {
    
          let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
          let arguments = ["-no-remote", "-P", "Standard-Benutzer"] // Profil wird ausgewählt Hier "XXX" das gewünschte Profil eintragen, z.B. Test
          file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // Pfad zur Firefox-Installation
          let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); 
          process.init(file);
          process.run(false, arguments, arguments.length); // Profil wird bestätigt
       }
    })();
    Alles anzeigen
  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 24. Juli 2023 um 23:12

    Es scheint so, dass das so wie ich mir das dachte nicht funktioniert,

    da das JavaScript auf Funktionen von Windows nicht zugreifen kann.

    Kann man per JavaScript denn z.B. ein anderes Skript starten?

    Vielleicht ein *.ps1 oder eine batch?


    2002Andreas

    Du hast ein JavaScript, aus dem heraus Du anderer Programme starten kannst?

    In Deinem Fall eine weitere Instanz eines portablen Firefox?

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 24. Juli 2023 um 22:24

    Ob man es nun einen kleinen Sieg nennen kann, sei mal dahin gestellt.

    Brauche nun nicht mehr über about:profiles gehen, sondern kann direkt das Auswahlfenster aufrufen.

    JavaScript
    (function() {
    
       // start customisation area----------------------------------
           let profilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'))
           let buttonIcon = "user-group_2.svg" // Name & Dateiendung des anzuzeigenden Symbols
       // end customisation area-----------------------------------
       
         if (!window.gBrowser) return;
       
         CustomizableUI.createWidget({
           id: 'aboutprofiles-button',
           defaultArea: CustomizableUI.AREA_NAVBAR,
           label: 'Quicklink: about:profile',
           tooltiptext: 'Quicklink:\nabout:profiles',
           onCommand: onCommand,
           onCreated: function(button) {
             button.style.listStyleImage = "url('" + profilePath + buttonIcon + "')";
             }
          });
       
          function onCommand() {
             var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
             file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
             var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
             process.init(file);
             process.run(false, ["-no-remote"], 1);
          }
       })();
    Alles anzeigen

    Der nächste Schritt müsste sein, dass einfach das gewünschte Profil ausgewählt ist (wird)

    und automatisch mit OK bestätigt wird.

  • Zweiten Reload-Stop-Button machen

    • Mira_Belle
    • 24. Juli 2023 um 11:33

    Wo ist denn das Original?

    Denn ich würde gerne wissen, was Du daran alles geändert hast!

  • Farbmarkierung für Tabs

    • Mira_Belle
    • 24. Juli 2023 um 09:27

    lenny2

    Tab Colors – Get this Extension for 🦊 Firefox (en-US)
    Download Tab Colors for Firefox. Selects a random color for each tab and displays the color while the tab is active. You can customize the colors to your…
    addons.mozilla.org
  • Separates Downloads-Fenster?

    • Mira_Belle
    • 22. Juli 2023 um 22:41

    NoNameNeeded

    Versuch mal

    JavaScript
      //  Downloadbutton.uc.js
    
      (function() {
    
      if (!window.gBrowser)
        return;
            
            try {
              CustomizableUI.createWidget({
                 id: 'Download-button',
                 type: 'custom',
                 defaultArea: CustomizableUI.AREA_NAVBAR,
                 onBuild: function(aDocument) {
                    let toolbaritem = aDocument.createXULElement('toolbarbutton');
                    let props = {
                       id: 'Download-button',
                       class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                       removable: true,
                       label: 'Downloads',
                       accesskey: 'D',
                       tooltiptext: 'Downloads',
                       style: 'list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASCAYAAABfJS4tAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABtUlEQVR42qWUsW4UMRiEZ2wH8QARIiWi4R4hF53OPTWPQZMSJEpKGniHSNAgRInEf0UuBUUkGqqI7pIiLdIpWB4a+3CcXS6Am7V37e+fGdvLxWLB+XzuzSzhPxtJSlKMMdDMrn2MMT5p5wJQHZjZu9sWCD1U0quRybMYo8yMt1EdBqAvyoTPAAKABACSfgC4R3IDjzGGPkJJAgCaWW//bzKVpN7BWzP7HcVYBP9QDChWAWAN4H7pp/L+qDy/DAEkfWpgF845SZoCeN+CWzvtzqdtUO/9eS8aANwWW+umf0ZyQnLinPvZQ4vaTevBRz2U5KQsfJhzfg3gI4BDkhcNdJ/k8k/gG0rL+FG1n3P+DkDOOVWlJE96xWGAeyopAQgkJ5K+Vahz7mmj8mUp+qzAly28V3zaFyR5VjMtUbROBqFbN6+AHgM4dM498N6fS3reQiXdiGEsimvHKef8pt19kvsVGkI4JnkwxHBAvAvcwdjZLSqne3ve7+xoVm2HEI5TSgdjbotiqlfaQkkuLy/TbHc3LFerNJV0Mqa0AdsaiB/KHf86Eg2uroDVKm1+PvWG1Surbs0vwI32T0LSlTkAAAAASUVORK5CYII=)',
                       oncommand: "window.open('chrome://browser/content/downloads/contentAreaDownloadsView.xhtml', 'Downloads', 'chrome,resizable=yes,width=600,height=750,left=1840,top=100');"
                    };
                    for (var p in props)
                        toolbaritem.setAttribute(p, props[p]);
                    return toolbaritem;
                   }
              });
           } catch(e) { };
           
      Downloads.getList(Downloads.ALL)
        .then(list => list.addView({
          onDownloadAdded: () =>
            Services.wm.getMostRecentBrowserWindow().document.getElementById('Download-button').click()
        }));
        
      })();
    Alles anzeigen

    Achtung!

    Altes Skript enthielt einen Fehler.

    Ist nun korrigiert.

  • Separates Downloads-Fenster?

    • Mira_Belle
    • 22. Juli 2023 um 21:20
    Zitat von NoNameNeeded

    Das funktioniert (bei mir) leider schon seit geraumer Zeit nicht mehr.

    Der Code wird korrekt dargestellt, nachdem man ihn eingefügt hat und sobald man auf Antworten (oder auch Vorschau) klickt wird er so dargestellt wie man ihn nun hier sehen kann. Das war früher anders, aber jetzt ist es so und lässt sich scheinbar auch nicht ändern.

    Ich habe das mit Firefox 102 probiert, mit der Version 115 und auch im Fehlerbehebungsmodus, es bleibt dabei (wie oben beschrieben). UTF-8 ohne BOM oder UTF-8 macht im Übrigen auch keinen Unterschied.


    Hier also als Dateianhang (es ist keine zip-Datei, man muss sie nur umbenennen, aus zip muss js werden)

    neuesDownloadfenster 3.uc.zip

    Alles anzeigen

    Du musst erst den Code einstellen, dann markieren und erst jetzt auf den Button klicken!

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 22. Juli 2023 um 13:15

    Sören Hentzschel

    Danke für Deine Antwort.

    Da ich ja nicht eine komplette Programmiersprache erlernen will, ist wohl für mich an dieser Stelle Schluß!

    Ich habe absolut keine Ahnung wie und wo ich das Richtige in einem meiner Skripts einfügen muss,

    damit einfach eine zweite Instanz mit einem anderen Profil gestartet wird.

    Ärgert mich jetzt etwas, wollte eine schnelle Lösung, is' aber nicht.

    Ergo, Projekt tot, beerdigt und begraben. Schade.

    Muss halt den Weg über about:profiles gehen, aber wenigstens kann ich diese Seite per QuickLinkButton erreichen.


    Nachtrag!

    Ich lasse das Thema noch ein weilchen auf unerledigt stehen,

    die Hoffnung stirbt zuletzt!

    Vielleicht habe ich ja Glück und ein JavaScript-Experte erbarmt sich,

    ändert den Code, oder gibt mir den oder die entscheidenden Tipps.

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 22. Juli 2023 um 09:43

    Bei vielen meiner Versuche habe ich doch glatt vergessen genau das Profil zu definieren, welches gestartet werden soll!

    Aber hier mal ein Fetzen Code.

    Code
          function onCommand(profileData) {
             let parent = document.getElementById("profiles");
             let div = document.createElement("div");
             parent.appendChild(div);
             let name = document.createElement("h2");
             div.appendChild(name);
             document.l10n.setAttributes(name, "profiles-name", {
             name: profileData.profile.name,
             });
             openProfile(profileData.profile);
          };
    Alles anzeigen

    Nun habe ich mir von ChatGPT den Code mal erklären lassen.

    Zitat

    1. 'function onCommand(profileData)' {: Hier wird eine JavaScript-Funktion mit dem Namen onCommand definiert, die ein Argument profileData erwartet. Diese Funktion wird später aufgerufen, um eine bestimmte Aufgabe auszuführen, wenn sie aufgerufen wird. Der Parameter profileData enthält dabei Informationen über ein bestimmtes Profil, das verarbeitet werden soll.

    2. 'let parent = document.getElementById("profiles");': In dieser Zeile wird eine Variable parent deklariert und mit dem Wert der DOM-Elementreferenz versehen, die das Element mit der ID "profiles" repräsentiert. Das 'document.getElementById("profiles")' ruft das DOM-Element mit der ID "profiles" ab. Die Variable parent wird verwendet, um später ein neues Element an dieses vorhandene Element anzuhängen.

    3. 'let div = document.createElement("div");': Hier wird eine Variable 'div' deklariert und mit einem neu erstellten <div>-Element versehen. Es wird ein neues DOM-Element vom Typ <div> erstellt, das später als Container für andere Elemente dienen wird.

    4. 'parent.appendChild(div);': Mit dieser Zeile wird das zuvor erstellte '<div>'-Element ('div') dem Elternelement ('parent') hinzugefügt. Dadurch wird das '<div>'-Element als Kind des Elements mit der ID "profiles" angehängt.

    5. 'let name = document.createElement("h2");': Eine weitere Variable namens 'name' wird deklariert und mit einem neu erstellten '<h2>'-Element versehen. Es wird ein neues DOM-Element vom Typ '<h2>' erstellt, das später den Namen des Profils anzeigen wird.

    6. 'div.appendChild(name);': Hier wird das '<h2>'-Element ('name') als Kind zum zuvor erstellten '<div>'-Element ('div') hinzugefügt. Dadurch wird das '<h2>'-Element im Container '<div>' platziert.

    7. 'document.l10n.setAttributes(name, "profiles-name", { name: profileData.profile.name });': Diese Zeile verwendet die 'setAttributes'-Methode aus dem Internationalization API (l10n) des Dokuments, um die Übersetzungsattribute für das '<h2>'-Element ('name') zu setzen. Der angezeigte Text wird durch Übersetzungsschlüssel "profiles-name" ersetzt, und der dazugehörige Wert wird aus dem 'profileData'-Objekt extrahiert und unter dem Schlüssel "name" gefunden. Dadurch wird der Name des Profils in das '<h2>'-Element eingefügt.

    8. 'openProfile(profileData.profile);': Schließlich wird die Funktion 'openProfile' aufgerufen und das 'profileData.profile' als Argument übergeben. Die genaue Implementierung der 'openProfile'-Funktion wird im gegebenen Codeausschnitt nicht gezeigt, aber es ist wahrscheinlich, dass sie das Profil öffnet oder weitere Aktionen mit den übergebenen Profilinformationen ausführt.

    Alles anzeigen

    Ich werde mich zu einem späteren Zeitpunkt genauer mit dieser Erklärung beschäftigen.

  • Im ExtraConfigMenu.uc.js werden die Scripte nicht mehr angezeigt.

    • Mira_Belle
    • 21. Juli 2023 um 16:49
    Zitat von omar1979
    Zitat von Mira_Belle

    Was nun?

    Du verlinkst auf eine Seite, wo erklärt wird, wie man mit Boardmitteln eine Sitzung wiederherstellen kann,

    aber meinst das doch irgendwie nicht, sondern Du möchtest einzelne Tab wiederherstellen können.

    Ich hatte das Problem, nachdem ich eine alte profil-ordner-backup geladen habe, dass meine offenen Tabs verschwunden sind. Dann hat Foxxiator gesagt, dass man es in einem Ordner wiederherstellen kann und 2002Andreas hat diesen Link gegeben wie man es macht. Ich konnte es aber nicht machen.

    Ah, jetzt ja.

    Also doch eine alte Sitzung wieder herstellen. Das ist dann aber daran gescheitert, dass in Deinem wiederhergestelltem Profil eben jene Datei mit den Infos gar nicht vorhanden war, es war ja ein "Backup", das älter war, als Deine letzte Sitzung.

    Wenn Du jetzt noch das "kaputte" Profil in der Hinterhand hast, ja dann lässt sich da was machen. Glaube ich.


    Muss mich jetzt aber mal für ein paar Stunden ausklinken.

  • Im ExtraConfigMenu.uc.js werden die Scripte nicht mehr angezeigt.

    • Mira_Belle
    • 21. Juli 2023 um 16:22
    Zitat von omar1979
    Zitat von Mira_Belle

    Ah, verstehe, also hast Du nicht eine Wiederherstellung von Tabs gemeint,

    sondern eine Wiederherstellung einer Sitzung.

    Ok.

    Dochdoch wiederherstellung von tabs.

    Was nun?

    Du verlinkst auf eine Seite, wo erklärt wird, wie man mit Boardmitteln eine Sitzung wiederherstellen kann,

    aber meinst das doch irgendwie nicht, sondern Du möchtest einzelne Tab wiederherstellen können.

    Irgendwie verstehe ich Dich jetzt nicht.

  • Im ExtraConfigMenu.uc.js werden die Scripte nicht mehr angezeigt.

    • Mira_Belle
    • 21. Juli 2023 um 15:57

    omar1979

    Ah, verstehe, also hast Du nicht eine Wiederherstellung von Tabs gemeint,

    sondern eine Wiederherstellung einer Sitzung.

    Ok.

  • cmd-Datei umschreiben für Sicherung und Herstellung Profilordner

    • Mira_Belle
    • 21. Juli 2023 um 15:48

    Am interessantesten finde ich das Script 33p_Archiv_restore.ps1.

    Zum Sichern der Profile habe ich schon was.

    Das werde ich mir bei Gelegenheit und Zeit mal vornehmen.

    1. Würde ich gerne eine Überprüfung, ob der Firefox gerade läuft, integrieren.

    2. Möchte ich das Entpacken direkt in den richtigen Ordner machen, ob dieser besser vorher gelöscht werden muss

    oder einfach überschrieben wird, muss ich erst noch sehen. Glaube aber, löschen ist der bessere Weg.

  • Im ExtraConfigMenu.uc.js werden die Scripte nicht mehr angezeigt.

    • Mira_Belle
    • 21. Juli 2023 um 15:33
    Zitat von omar1979

    Also das mit Tabs wiederherstellen hat nicht geklappt, ist aber auch egal. ich hoffe dass das Rest klappt. :)

    War das eine Funktion "Mit der rechten Maustaste auf das Plus klicken"?

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 21. Juli 2023 um 15:25

    Ein anderer Ansatz!

    Dennoch stecke ich fest.

    Der Button wird angezeigt, beim Betätigen tut sich jedoch nichts.

    Stehe total auf dem Schlauch :!:

    JavaScript
    (function() {
    
       // start customisation area----------------------------------
           let profilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'))
    //       let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
           let buttonIcon = "user-group_2.svg" // Name & Dateiendung des anzuzeigenden Symbols
       // end customisation area-----------------------------------
       
         if (!window.gBrowser) return;
       
         CustomizableUI.createWidget({
           id: 'aboutprofiles-button',
           defaultArea: CustomizableUI.AREA_NAVBAR,
           label: 'Quicklink: about:profile',
           tooltiptext: 'Quicklink:\nabout:profiles',
           onCommand: onCommand,
           onCreated: function(button) {
             button.style.listStyleImage = "url('" + profilePath + buttonIcon + "')";
             }
          });
       
          function onCommand(profileData) {
             let parent = document.getElementById("profiles");
             let div = document.createElement("div");
             parent.appendChild(div);
             let name = document.createElement("h2");
             div.appendChild(name);
             document.l10n.setAttributes(name, "profiles-name", {
             name: profileData.profile.name,
             });
             openProfile(profileData.profile);
          };
       })();
    Alles anzeigen

    Ich bräucht Hilfe von einem JavaScript Experten.

Unterstütze uns!

Jährlich (2025)

105,8 %

105,8% (687,41 von 650 EUR)

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