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 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 – 43 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 – 51 Downloads
  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 12. Januar 2025 um 00:47
    Zitat von milupo

    Mitleser Die Inline-Eventhandler sind ja schon lange nur eine Altlast nebenher, die Variante mit addEventListener und seinem Gegenstück removeEventListener gibt es ja schon seit einer Ewigkeit.

    Ach so :thumbup:, Danke!,

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 12. Januar 2025 um 00:12
    Zitat von BrokenHeart

    Brauchst du auch gar nicht. Wenn du das angepasste Skript in der Release-Version testest und es genau das macht, was das Skript vorher gemacht hat, dann wird es auch in der Nightly funktionieren.

    Getestet in Release und funzt!

    Danke!!

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 11. Januar 2025 um 23:47
    Zitat von BrokenHeart

    Funktioniert das angepasste Script aus #91 bei dir nicht?

    Habe leider kein Nightly zum testen...

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • Mitleser
    • 11. Januar 2025 um 23:34

    Schade. war einen Versuch wert. Da ich das nicht testen kann gebe ich auf. Danke für die Rückmeldungen.

Unterstütze uns!

Jährlich (2025)

82,4 %

82,4% (535,86 von 650 EUR)

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