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

Beiträge von Mitleser

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mitleser
    • 26. Januar 2025 um 22:30
    Zitat von Horstmann

    wenn du das Script von hier benutzt, funktionieren deshalb andere Scripts nicht mehr?

    Nein, unabhängig davon.
    Zwei Fenster geöffnet, dann das Erste geschlossen; im verbleibenden F. funktioniert kein Button, bis auf: extras_config_menu.uc.js, der Klick funzt, Menü popt auf, weiter nicht getestet. Und das auch nur im Release. Sowie der von Dir erwähnte 'Entwicklerwerkzeuge-button.uc.js' aus RE: Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    Wenn beide F. geöffnet sind funzen alle Buttons auch im zweiten F. ....

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mitleser
    • 26. Januar 2025 um 21:13
    Zitat von Horstmann

    Was ich nochmal auf Nightly und Release getestet habe, und hier immer noch klappt, ist das Script von da

    Bei diesem (wirklich unwahrscheinlichem) Szenario kann ich das bestätigen!
    Alle anderen Buttons funzen dann nicht (Ausnahme: extras_config_menu.uc.js)!

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mitleser
    • 26. Januar 2025 um 19:47
    Zitat von Horstmann

    Startcache habt ihr aber schon gelöscht vor/bei dem Testen?

    Aber ja doch, was wäre denn Dein Fazit aus Deinem Beitrag:

    Zitat von Horstmann

    Hier ist das alte Problem: wenn das zuerst (bei Programmstart) geöffnete Fx Fenster geschlossen wurde - falls man mit mehreren Fenstern arbeitet - funktioniert dieser Scriptaufbau nicht mehr, jedenfalls hier.

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mitleser
    • 26. Januar 2025 um 19:18
    Zitat von Horstmann

    probier das evtl. mal aus

    Habe ich auch mal gemacht, vielleicht hilft Dir das weiter: funzt auch nicht!

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mitleser
    • 26. Januar 2025 um 19:00

    Habe gerade mal mit Deinem (doch sehr unwahrscheinlichem) Szenario getestet. Hier funzt damit kein Button (Release +Linux)!

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mitleser
    • 26. Januar 2025 um 18:31
    Zitat von Horstmann

    wenn das zuerst (bei Programmstart) geöffnete Fx Fenster geschlossen wurde - falls man mit mehreren Fenstern arbeitet - funktioniert dieser Scriptaufbau nicht mehr, jedenfalls hier.

    Zitat von Horstmann

    Was hier klappt:

    Hier funzt Dein gerade gepostetes Script unter den von Dir geschilderten Bedingungen auch nicht (Linux).

  • Browserkonsole.uc.js funktioniert nicht mehr

    • Mitleser
    • 26. Januar 2025 um 17:57
    Zitat von 2002Andreas

    ich war mal so frei, und habe das für ihn gemacht

    Aus kosmetischen Gründen (beeinflußt die Funktion nicht) könnte man in Zeile 33 noch ein ';' anhängen. Der Code ist dann einfach bessser lesbar (:saint:).

    onCommand();

    Und um Verwirrungen mit 'Inline Event Handlers' aus dem Weg zu gehen könnte die Funktion auch einen anderen Namen erhalten.

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • Mitleser
    • 25. Januar 2025 um 16:25

    Und hier meins:

    Icon: 16synchronization_moz.svg

    JavaScript
    // JavaScript Document
    // B_RestartFirefox.uc.js
    
    // Das Script erstellt einen Button, der Firefox neu startet. Linksklick: Neustart MIT löschen Js-Cache \ Mittelklick: Neustart OHNE löschen Js-Cache \ Rechtsklick: Neustart OHNE löschen Js-Cache. Das .svg-Icon kann - je nach Hover-Zustand - mit zwei unterschiedlichen Farben gefüllt werden [fill]. 
    // Für das mitgelieferte Icon als .svg-Datei mit [moz-context-properties] ändert das Script die Einstellung [svg.context-properties.content.enabled] in about:config auf 'true'.
    
    (function() {
      if (!window.gBrowser)
    	return;
    // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    const id = 'restart-button'; // Id des neuen Buttons
    const label = 'Restart - Quicklink'; // Bezeichnung des neuen Buttons
    const tooltiptext = 'Restart - Quicklink\n\nLinksklick: Neustart MIT löschen Js-Cache\nMittelklick: Neustart OHNE löschen Js-Cache\nRechtsklick: Neustart OHNE löschen Js-Cache';
    // Icon-------------------------------------------------------
    const icon = '16synchronization_moz.svg';  // [Name.Dateiendung] des anzuzeigenden Symbols
    const iconPath = '/chrome/icons/'; // Pfad zum Ordner der das Icon beinhaltet
    const iconColOu = 'red';  // Farbe des Icons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOu keine Funktion)
    const iconColOv = 'currentColor';  // Farbe des Icons beim Überfahren des Buttons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOv keine Funktion)
    // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    const curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    const cl = '.toolbarbutton-icon';
    //----
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
    //----   
    CustomizableUI.createWidget({
        id: id,
    	type: 'button',
        defaultArea: CustomizableUI.AREA_NAVBAR,
        label: label,
        tooltiptext: tooltiptext,
    
        onCreated: (button) => {
    		button.style.MozContextProperties = 'fill, stroke, fill-opacity';
    		button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
    		button.style.fill = iconColOu;
    //over
    button.addEventListener('mouseover', () => {
    		button.style.fill = iconColOv;
    		button.querySelector(cl).style.rotate = '90deg';
    });
    //out
    button.addEventListener('mouseout', () => {
    		button.style.fill = iconColOu;
    		button.querySelector(cl).style.rotate = '0deg';
    });
    //click
    button.addEventListener('click', () => {
    	if (event.button == 0) {
    		 Services.appinfo.invalidateCachesOnRestart();
           	 Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
    	}
    	else
    	if (event.button == 1 || event.button == 2) {
    		 Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit); 
    	} 
    });
    	}
    });
    //----
    })();
    Alles anzeigen

    Dateien

    16synchronization_moz.svg 1,31 kB – 45 Downloads
  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 24. Januar 2025 um 11:58

    Ich habe in einigen Beiträgen (UserPref betreffende Button-) Scripte angeboten. Post

    Beitrag

    RE: Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    Speravir Als Sören Hentzschel die kommenden Änderungen an den Inline-Eventhandlern publiziert hat, habe ich angefangen einige Button-Scripte umzuschreiben, darunter auch einige Scripte die Userprefs betreffen
    (setIntPref/setBoolPref oder setCharPref). Bei mir befinden sich diese Buttons in einer zusätzlichen Seitenleiste am rechten Rand. Hier mein Script um den 'image.animation_mode' zu schalten. Aber ob das auch auf Nightly 136 läuft?

    Hier die Icons: icons.zip

    (Quelltext, 100 Zeilen)

    Mitleser
    10. Januar 2025 um 04:09

    und Folgende
    Bug: Die Buttons wurden in einem neuen Fenster nicht angezeigt. Dieser Fehler ist jetzt behoben. Download mit Icons als gepackte Datei: UserPrefScripte.zip

  • Altes Add-on wiederbeleben: bookmarks_title_styles-1.4.0-fx.xpi

    • Mitleser
    • 18. Januar 2025 um 00:58

    Vielleicht bringt dich das weiter:

    Search - mozsearch

    Aber bei deinem Vorhaben einzelne Ordner oder Lesezeichen in der Sidebar anzusprechen, sehe ich keine Möglichkeit.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 17. Januar 2025 um 23:29

    Bei mir ist die Schaltfläche "Alle Tabs wieder öffnen" oberhalb der Liste, auch in einem neuen Profil...
    Quelle:

    userChrome.js/Firefox 135/UndoListInTabmenuToo.uc.js at master · Endor8/userChrome.js
    Skripte für die Firefox-Erweiterung userChromeJS. Contribute to Endor8/userChrome.js development by creating an account on GitHub.
    github.com

  • Script für animierte Grafiken funktioniert ab FF 94 nicht mehr vollständig

    • Mitleser
    • 16. Januar 2025 um 00:24

    Danke für Dein Interesse! Ohne Kritik kann man sich nicht weiterentwickeln! Ich werde Deine Einwände beim nächsten Script (sollte ich noch mal eins schreiben, eher unwahrscheinlich) auf jeden Fall bedenken!

  • Script für animierte Grafiken funktioniert ab FF 94 nicht mehr vollständig

    • Mitleser
    • 15. Januar 2025 um 10:26
    Zitat von Speravir

    Es geht jedoch so etwas

    In der Tat wäre dies etwas kürzer, aber auch wieder etwas schlechter lesbar.

    Zitat von Speravir

    Schrägstrich im Pfad sind wichtig für die Funktionalität, so dass man darauf hinweisen könnte, sie nicht zu entfernen

    Kann man machen aber 'copy and paste' aus einem Dateimanager sollte man dann schon voraussetzen können.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 14. Januar 2025 um 19:26
    Zitat von milupo

    Und ich habe noch eine weitere Variante:

    Das funzt?
    Zeile 18 = 25 ?

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 14. Januar 2025 um 19:07
    Zitat von lenny2

    Ich nutze dieses Skript, funktionierte nicht mehr in Nightly

    Ich hätte nur ein Alternativ-Script:
    Icon: 16_library-big_moz.svg

    JavaScript
    // JavaScript Document
    // B_Bookmarks-manager.uc.js
    
    // Das Script erstellt einen Button, der die Bibliothek öffnet. Das .svg-Icon kann - je nach Hover-Zustand - mit zwei unterschiedlichen Farben gefüllt werden [fill].
    // Für das mitgelieferte Icon als .svg-Datei mit [moz-context-properties] ändert das Script die Einstellung [svg.context-properties.content.enabled] in about:config auf 'true'.
    
    (function() {
      if (!window.gBrowser)
    	return;
    // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    const id = 'bookmarks-manager-button'; // Id des neuen Buttons
    const label = 'Bibliothek'; // Bezeichnung des neuen Buttons
    const tooltiptext = 'Bibliothek';
    // Icon-------------------------------------------------------
    const icon = '16_library-big_moz.svg'  // [Name.Dateiendung] des anzuzeigenden Symbols
    const iconPath = '/chrome/icons/' // Pfad zum Ordner der das Icon beinhaltet
    const iconColOu = 'teal';  // Farbe des Icons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOu keine Funktion)
    const iconColOv = 'currentColor';  // Farbe des Icons beim Überfahren des Buttons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOv keine Funktion)
    // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    const curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    //----
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
    //----   
    CustomizableUI.createWidget({
        id: id,
        defaultArea: CustomizableUI.AREA_NAVBAR,
        label: label,
        tooltiptext: tooltiptext,
        onCreated: (button) => {
    		button.style.MozContextProperties = 'fill';
    		button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
    	}
    });
    
    const el = document.getElementById(id);
    const cl = '.toolbarbutton-icon';
    //start
    	el.querySelector(cl).style.fill = iconColOu;
    //over
    el.addEventListener('mouseover', () => {
    	el.querySelector(cl).style.fill = iconColOv;
    });
    //out
    el.addEventListener('mouseout', () => {
    	el.querySelector(cl).style.fill = iconColOu;
    });
    //click
    el.addEventListener('click', () => {
    	if (event.button == 0) {
    //       	 PlacesCommandHook.showPlacesOrganizer('History');
    			 openTrustedLinkIn('chrome://browser/content/places/places.xhtml', 'tab');
    	}
    });
    //----
    })();
    Alles anzeigen
  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 14. Januar 2025 um 18:31
    Zitat von 2002Andreas

    (hätte ich auch vor ewigen Zeiten schon mal nachfragen können) ;)

    Oder ich hätte das (vor äonen von Jahren) mal korrigieren sollen:/

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 14. Januar 2025 um 18:06
    Zitat von 2002Andreas

    Ich nutze u.a. dieses Skript:

    Genau dieses Script geändert und ungetestet im Nightly!

    JavaScript
    (function() {
    
      if (location != 'chrome://browser/content/browser.xhtml')
        return;
    
      let menuitem = document.createXULElement('menuitem');
      menuitem.id = 'context_closeLeftTabs';
      menuitem.setAttribute('label', 'Linke Tabs schließen');
      let tabContextMenu = document.getElementById('tabContextMenu');
      let refItem = document.getElementById('context_undoCloseTab');
       tabContextMenu.insertBefore(document.getElementById('context_closeTabsToTheEnd'), refItem);
      tabContextMenu.insertBefore(document.getElementById('context_closeTabsToTheStart'), refItem);
      tabContextMenu.insertBefore(document.getElementById('context_closeOtherTabs'), refItem);
      //tabContextMenu.removeChild(document.getElementById('context_closeTabOptions'));
    //click
    menuitem.addEventListener('click', () => {
    	if (event.button == 0) {
           	 for (let i = TabContextMenu.contextTab._tPos - 1; i >= 0; i--)gBrowser.removeTab(gBrowser.tabs[i], {animate: true});
                }
    }); 
    
    })();
    Alles anzeigen
  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 12. Januar 2025 um 15:26
    Zitat von 2002Andreas

    Tab schließen + Kontextmenü auch in dem Einstellungsfenster

    Vielleicht reicht das schon aus; ungetestet! Zeile 19 ersetzen mit:

    JavaScript
    menuitem.addEventListener('click', () => {
    	BrowserCommands.closeTabOrWindow();
    });

    ?


    Zitat von grisu2099

    Eins hab ich noch..

    Auch nur wieder ein Alternativ-Script aus meiner Sammlung (Icons aus #23):

    JavaScript
    // JavaScript Document
    // B_UserPrefToolbarTip.uc.js
    
    // Das Script erstellt einen Button, der in about:config boolsche Werte ändert. In der UserConfiguration unter 'const boolPref' kann die zu ändernde Einstellung festgelegt werden. Das icon/label/tooltiptext kann in der UserConfiguration dem jeweiligen Zustand angepasst werden (true/false).
    // Für das mitgelieferte Icon als .svg-Datei mit [moz-context-properties] ändert das Script die Einstellung [svg.context-properties.content.enabled] in about:config auf 'true'.
    
    (function() {
      if (!window.gBrowser)
    	return;
    // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    const id = 'UserPref-t_t-button'; // Id des neuen Buttons
    const boolPref = 'browser.chrome.toolbar_tips'; // Einstellung in about:config deren boolesche Variable geschaltet werden soll
    const labelT = 'Tooltips aktiviert'; // Bezeichnung des neuen Buttons bei boolPref=true
    const labelF = 'Tooltips deaktiviert'; // Bezeichnung des neuen Buttons bei boolPref=false
    const tooltiptextT = 'Tooltips aktiviert';
    const tooltiptextF = 'Tooltips deaktiviert';
    // Icon-------------------------------------------------------
    const iconT = '16-control-panel-20_moz.svg';  // [Name.Dateiendung] des anzuzeigenden Symbols für boolPref=true
    const iconF = '16-control-panel-18_moz.svg';  // [Name.Dateiendung] des anzuzeigenden Symbols für boolPref=false
    const bgImage = 'greenyellow'; // Farbe des Indikators (zur Unterscheidung mehrerer UserPref-buttons;)
    const iconPath = '/chrome/icons/'; // Pfad zum Ordner der das Icon beinhaltet
    const iconColorT = 'forestgreen';  // Farbe des Icons (nur .svg-Datei mit [moz-context-properties] für boolPref=true, bei anderen Icons hat const iconColorT keine Funktion)
    const iconColorF = 'firebrick';  // Farbe des Icons (nur .svg-Datei mit [moz-context-properties] für boolPref=false, bei anderen Icons hat const iconColorF keine Funktion)
    // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    const curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    //----
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
    //----  
    CustomizableUI.createWidget({
        id: id,
        defaultArea: CustomizableUI.AREA_NAVBAR,
        onCreated: function(button) {
    		button.style.MozContextProperties = 'fill';
    //bgImage
    		button.style = 'background-image:linear-gradient('+bgImage+','+bgImage+'); background-repeat: no-repeat; background-size: 4px 4px; background-position: left 2px top calc(50% - 8px);';
    	}
    });
    
    const el = document.getElementById(id);
    const cl = '.toolbarbutton-icon';
    //start
    if (Services.prefs.getBoolPref(boolPref) == false ) {
    		el.querySelector(cl).style.fill = iconColorF;
    		el.style.listStyleImage = 'url("' + curProfDir + iconPath + iconF + '")';
        	el.setAttribute('label', labelF);
        	el.setAttribute('tooltiptext', tooltiptextF);
    }
    else
    if (Services.prefs.getBoolPref(boolPref) == true ) {
    		el.querySelector(cl).style.fill = iconColorT;
    		el.style.listStyleImage = 'url("' + curProfDir + iconPath + iconT + '")';
        	el.setAttribute('label', labelT);
        	el.setAttribute('tooltiptext', tooltiptextT);
    }
    //click
    el.addEventListener('click', () => {
    if (event.button == 0) {
    	if (Services.prefs.getBoolPref(boolPref) == false ) {
    		el.querySelector(cl).style.fill = iconColorT;
    		Services.prefs.setBoolPref(boolPref, true);
    		el.style.listStyleImage = 'url("' + curProfDir + iconPath + iconT + '")';
        	el.setAttribute('label', labelT);
        	el.setAttribute('tooltiptext', tooltiptextT);
    	}
    	else
    	if (Services.prefs.getBoolPref(boolPref) == true ) {
    		el.querySelector(cl).style.fill = iconColorF;
    		Services.prefs.setBoolPref(boolPref, false);
    		el.style.listStyleImage = 'url("' + curProfDir + iconPath + iconF + '")';
        	el.setAttribute('label', labelF);
        	el.setAttribute('tooltiptext', tooltiptextF);
    	}
    }
    });
    //----
    })();
    Alles anzeigen
  • Script für animierte Grafiken funktioniert ab FF 94 nicht mehr vollständig

    • Mitleser
    • 12. Januar 2025 um 02:15

    Wie Du vielleicht bemerkt hast, ist mir die 'ConfigArea' in meinen Scripten sehr wichtig. Es gibt Menschen, die kaum Ahnung von JavaScript haben die Möglichkeit einfach ein Script zu konfigurieren. Deshalb gibt es z.B. die Möglichkeit den Pfad einzustellen (const iconPath = '/chrome/icons/';). Außerdem nutze ich meist mehrere Icons in den Pfaden zu den ListStylImages. Wenn ein 'switch' besser als ein 'if' sein sollte, benutze ich diesen auch. Aber trotzdem: Danke für Deine Anmerkungen!

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 12. Januar 2025 um 01:05

    Ich hätte dies:

    Translate_DeepL.uc.js
    16_deepl_logo_moz.svg

    JavaScript
    // JavaScript Document
    // M_Translate_DeepL.uc.js
    
    // Das Script erstellt einen neuen Menüeintrag. Beim Klick auf den Eintrag öffnet die Seite https://www.deepl.com/...in einem neuen Tab und der vorher markierte Text wird übernommen.
    
    // Bug: Sprache erkennen funktioniert nicht.
    
    // Das .svg-Icon kann - je nach Hover-Zustand - mit zwei unterschiedlichen Farben gefüllt werden [fill]. Beim Überfahren des Menuitems vergrößert sich das Icon [scale: 1.1].
    // Das Menü für den Menüeintrag kann selektiert werden (Seitenkontextmenü oder Tabkontextmenü).
    // Die Position des Menüeintrags innerhalb des Menüs kann bestimmt werden.
    // Darstellung des Menüeintrags mit/ohne Icon kann gewählt werden.
    // Für das mitgelieferte Icon als .svg-Datei mit [moz-context-properties] ändert das Script - bei gewählter Iconanzeige [const isIcon = 1;] -  die Einstellung [svg.context-properties.content.enabled] in about:config auf 'true'.
    
    (function() {
      if (!window.gBrowser)
    	return;
    // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    const id = 'contextDeepletranslate'; // ID des neuen menuitems
    const label = 'Deepl Translate'; // Bezeichnung des neuen menuitems
    const tooltiptext = 'Mit DeeplTranslate übersetzen'; 
    // Icon-------------------------------------------------------
    const isIcon = 1;
    // const isIcon = 1; mit Icon 
    // const isIcon = 0; ohne Icon; die Konstanten icon, iconPath, iconColOu und iconColOv haben dann keine Funktion und sollten unberührt bleiben
    const icon = '16_deepl_logo_moz.svg';  // [Name.Dateiendung] des anzuzeigenden Symbols
    const iconPath = '/chrome/icons/'; // Pfad zum Ordner der das Icon beinhaltet
    const iconColOu = 'steelblue';  // Farbe des Icons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOu keine Funktion)
    const iconColOv = 'currentColor';  // Farbe des Icons beim Überfahren des Items (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOv keine Funktion)
    // Menü-------------------------------------------------------
    const isMenu = 1; 
    // const isMenu = 1; für Seitenkontextmenü; 
    // const isMenu = 2; für Tabkontextmenü'; 
    const isPos = 'context-translate-selection'; 
    // Option A: 
    // const isPos = 12; [Zahlen von -5 bis 20] 
    // Menuitem an einer bestimmten Position im Menü einfügen 
    // wie in CSS: [order:12!important;] 
    // Option B: 
    // const isPos = 'context-translate-selection'; [String] 
    // Menuitem auf diesen Menüpunkt folgend einfügen 
    // wie in CSS: [#context-translate-selection] 
    // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    const curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    const cl = 'image';
    const menu1 = document.getElementById('contentAreaContextMenu');
    const menu2 = document.getElementById('tabContextMenu');
    
    const menuitem = document.createXULElement('menuitem');
          menuitem.id = id;
          menuitem.setAttribute('label', label);
          menuitem.setAttribute('tooltiptext', tooltiptext);
    //mit Icon	  
    if (isIcon === 1) {
    //----
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
    //----   
    	  menuitem.classList.add('menuitem-iconic');
    	  menuitem.style.MozContextProperties = 'fill';
    	  menuitem.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
    //Icon start
    switch (isMenu) {
    	case 1:
    	menu1.addEventListener('popupshowing', () => {
    	menuitem.querySelector(cl).style.fill = iconColOu;
    });
    	break;
    	case 2:
    	menu2.addEventListener('popupshowing', () => {
    	menuitem.querySelector(cl).style.fill = iconColOu;
    });
    	break;
    }
    //Icon over
    menuitem.addEventListener('mouseover', () => {
    	  menuitem.querySelector(cl).setAttribute('style','fill:'+iconColOv+';scale: 1.1;transition: scale 0.2s ease-in-out 0.0s;');
    });
    //Icon out
    menuitem.addEventListener('mouseout', () => {
    	  menuitem.querySelector(cl).setAttribute('style','fill:'+iconColOu+';scale: 1.0;transition: scale 0.2s ease-in-out 0.0s;');
    });
    
    }
    //Icon end
    //click
    menuitem.addEventListener('click', () => {
    	if (event.button == 0) {
           	 translate();
                }
    });
    //Position order
    if (isPos > -6 && isPos < 21) {
    	if (isMenu === 1) {
    		  menu1.append(menuitem);
    	} 
    	else
    	if (isMenu === 2) {
    	  	  menu2.append(menuitem);
    	}
    menuitem.style.order = isPos;
    }
    //Position reference
    else {
    const refItem = document.getElementById(isPos); 
     	  refItem.parentNode.insertBefore(menuitem, refItem.nextSibling);
    }
    //----
    function translate() {
    const browserMM = gBrowser.selectedBrowser.messageManager;
    	  browserMM.addMessageListener('getSelection', function listener(message) {
    const t = (message.data !== '');
    const e = (document.charset || document.characterSet);
    	if (t) {
    		openTrustedLinkIn('https://www.deepl.com/translator#en/de/' + encodeURIComponent(message.data), 'tab');
    	} 
    	else {
    		openTrustedLinkIn('https://www.deepl.com/translate?u=' + encodeURIComponent(gBrowser.currentURI.spec) + '&hl=de-DE&ie=' + e + '&sl=auto&tl=de-DE', 'tab');
    	};
    		browserMM.removeMessageListener('getSelection', listener, true);
    		});
    		browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true);
    };
    //----
    })();
    Alles anzeigen

    Dateien

    16_deepl_logo_moz.svg 1,84 kB – 53 Downloads

Unterstütze uns!

Jährlich (2025)

92,9 %

92,9% (604,17 von 650 EUR)

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