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

Beiträge von milupo

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 16:02
    Zitat von FuchsFan

    Noch ein Script, das funktioniert.

    Es funktioniert? Mit dem Nightly? Glaube ich nicht, denn es muss noch angepasst werden.


    Zitat von Endor

    Leider funktioniert diese Version hier nicht richtig.
    Das Popup mit den Einträgen wird angezeigt, aber bei klick drauf tut sich hier nichts.

    Ja, kann ich bestätigen. Ich frage mich, wie da grisu2099 und BrokenHeart meinen, dass das Skript funktioniert. :/

  • aktiven Tab hervorheben

    • milupo
    • 12. Januar 2025 um 15:54

    Nun, Firefox 134 ist auch stable und auf dem aktuellen Stand. Ich empfehle dir daher auch, wie AngelOfDarkness, die .deb-Versionen von Mozilla zu verwenden. ESR-Versionen sind sowieso nur für Unternehmen, Organisationen und Schulen gedacht.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 15:41

    Kein Problem.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 15:37
    Zitat von Mitleser

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

    Habe ich doch oben in meiner Version angegeben und auch in der anderen Version (mit der Konfiguration) war dieser Code drinnen. :/

  • aktiven Tab hervorheben

    • milupo
    • 12. Januar 2025 um 15:34

    Debian sollte doch aber auch eine normale Release-Version anbieten, nicht nur eine ESR-Version.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 14:57
    Zitat von Endor

    Das müsste das Original sein:

    Hallo Endor,

    dieses Skript müsste für Mira_Belle erledigt sein, sie hat ja das fertige Skript gefunden:

    Beitrag

    RE: Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    Oh nein:!:Ich bin sooo doof:!::!:
    Bein herumexperimentieren habe ich mir newTabButtonUndoTabList.uc.js zerschossen
    und nun weiß ich nicht mehr, wie ich Zeile 40 korrigiert hatte.



    Oh man, ich sollte mal eine Pause machen!
    In #109 steht doch die Lösung!!
    Mira_Belle
    12. Januar 2025 um 14:04
  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 14:42

    Das ist aber eine andere Version, ohne Konfiguration am Anfang.

    Mit aktualisiertem Eventhandler-Code funktioniert diese Version in about:preferences.

    JavaScript
    //Author @aborix - Tab schließen + Kontextmenü auch in dem Einstellungsfenster
    //Erklärung von Sören https://www.camp-firefox.de/forum/thema/112673-userchrome-js-scripte-f%C3%BCr-den-fuchs-diskussion/?postID=1247653#post1247653
    //angepasst von @milupo Zeile 22 > 8.10.2024 ab Fx 132 > tabbrowser-tabbox statt appcontent
    
    (function() {
    
      if (!window.gBrowser)
        return;
    
      var contextMenu = document.getElementById('contentAreaContextMenu');
      var menuseparator = document.createXULElement('menuseparator');
      menuseparator.id = 'context-sep-closetab';
      contextMenu.append(menuseparator);
    
      var menuitem = document.createXULElement('menuitem');
      menuitem.id = 'context-closetab';
      menuitem.setAttribute('label', 'Tab schließen');
      //menuitem.setAttribute('oncommand', 'gBrowser.removeCurrentTab();');
      menuitem.addEventListener('click', () => {
                                  BrowserCommands.closeTabOrWindow();
                                   
      });
      contextMenu.append(menuitem);
    
      var appcontent = document.getElementById('tabbrowser-tabbox');
      appcontent.addEventListener('contextmenu', event => {
        setTimeout(() => {
          if (gContextMenu && !gContextMenu.shouldDisplay) {
            for (let string of 'back forward reload bookmarkpage'.split(' ')) {
              document.getElementById('context-' + string).removeAttribute('hidden');
            }
            document.getElementById('context-stop').setAttribute('hidden', 'true');
            const A = 'navigation sep-navigation savepage sep-paste selectall sep-viewsource viewsource viewinfo sep-bidi inspect-a11y inspect sep-closetab closetab'.split(' ');
            for (let node of contextMenu.childNodes) {
              if (A.includes(node.id.substring(8)))
                node.removeAttribute('hidden');
              else
                node.setAttribute('hidden', 'true');
            }
            contextMenu.openPopupAtScreen(event.screenX, event.screenY, true, event);
          }
        }, 50);
      });
    
    })();
    Alles anzeigen
  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 14:21
    Zitat von Mira_Belle

    Oh man, ich sollte mal eine Pause machen!
    In #109 steht doch die Lösung!!

    Nicht, dass du dich da wunderst: onpopupshowing ist in dem Skript kein Inline-Eventhandler, der hätte ersetzt werden müssen. Da hätte sich der Autor des Skriptes eigentlich an die Standardschreibweise halten müssen: onPopupshowing, hat er aber nicht, so sieht es wie ein Inline-Eventhandler aus, obwohl es keiner ist.


    2002Andreas Kannst du mal das Skript ohne Änderung einstellen? Möglicherweise wurde beim Ändern ein Fehler eingebaut. Auf jeden Fall kann ich das bestätigen. Der Witz dabei ist, ich habe hier eine andere Version, da funktioniert es nun wieder nur in about:preferences. Allerdings ist mir das wurscht. Denn der Eintrag „Tab schließen“ als Eintrag im Kontextmenü eines Tabs ist schon seit langem Standard.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 13:24
    Zitat von Mira_Belle

    einfach nur den Fehler doch "oncommand" zu benutzen?

    Nein, so einfach geht es eben nicht. Du musst addEventListener verwenden, nicht setAttribute. Die Parameter command und function (event) gehören zu addEventListener. Davor steht das Objekt (hier item), in den Skripten ist das meist eine Variable, die vorher mit var oder let definiert wird.

    Mit setAttribute wurde vorher oncommand als Attribut definiert (setAttribute = setze Attribut soundso). Da es keine Inline-Eventhandler mehr gibt, geht es nicht mehr diese als Attribut zu definieren.

    Also sieht es so aus: objekt.addEventListener('command', function (event) { … }); Zwischen den geschweiften Klammern steht der auszuführende Code, der leider auch oft umgebaut werden muss.

  • Aktiven Tab hervorheben aber auch die inaktiven Tabs besser trennen

    • milupo
    • 12. Januar 2025 um 12:48
    Zitat von spooner.arthur

    Wenn ich deinen Code einfüge, dann sind die Buttons trotzdem grau statt weiß.

    Grau müssten deine Menüleiste, deine Tableiste und der aktive Tab sein. Die beiden Symbole, um die es hier geht, sollten bei dir weiß sein.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 12:32
    Zitat von Mira_Belle

    Wie bist Du denn auf

    item.addEventListener ('command', function (event) {
    if (event.button == 0) {
    gExternalApplications.exec(this.path, this.args);
    } ,anstatt

    item.setAttribute('oncommand', function(event) {
    gExternalApplications.exec(this.path, this.args);
    }, true) gekommen?

    Du könntest schwere Fragen stellen. :)

    Was du bisher noch nicht so richtig verstanden hast: Es gibt keine Inline-Eventhandler mehr. Diese beginnen mit on- und danach den entsprechenden Befehl, also z. B. oncommand, onclick, ondblclick. Stattdessen kann jetzt nur noch die Methode addEventlistener verwendet werden, die den Eventhandler dem Skript sozusagen bekannt macht. Der Eventhandler ist dabei ohne vorgesetztes on, also nur command, click, dblclick. Die Methode addEventListener hat noch einen zweiten Parameter und das ist noch so ein Rätsel für mich. Wenn im auszuführenden Code event vorkommt, kann man offensichtlich event => verwenden. Aber dieser zweite Parameter kann auch eine Funktion sein. Und hier wird ja eine Funktion ausgeführt. Deswegen habe ich einfach function (event) genommen, in der Hoffnung, es funktioniert. Es hat funktioniert, Glück gehabt.


    Zitat von 2002Andreas

    und diesen beiden Spielen

    So lange wie sie auf einem neueren Windows noch laufen …

  • Aktiven Tab hervorheben aber auch die inaktiven Tabs besser trennen

    • milupo
    • 12. Januar 2025 um 12:19
    Zitat von spooner.arthur

    funktioniert leider nicht.

    Firefox neu gestartet?

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

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

    Somit funktionieren 15 Skripte dank eurer Hilfe wieder einwandfrei

    Na, das ist doch was. Und Spider Solitär ist auch wieder erreichbar. ;)

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 12:11
    Zitat von 2002Andreas

    Funktioniert hat es trotzdem.

    Ja, weil es nur das Menü betraf. Der Code für das Symbol war ja korrekt.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 12:06

    In Zeile 14 muss man bei type button in menu ändern. Dadurch hat man dann das Menü Start am Ende der Menüleiste. Aber: Bitte korrigiere im Skript am Ende tem.addEventListener in item.addEventlistener, sonst funktioniert der Aufruf per Menü nicht. Habe vergessen den Buchstaben „i“ zu kopieren. War ein blöder Kopierfehler.


    Zitat von Mira_Belle

    da hat milupo ein i vergessen.

    Genau. :(

    Habe es im Code-Kasten oben geändert.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 11:49

    2002Andreas Diese Version scheint zu klappen:

    JavaScript
    // ==UserScript==
    // @name           Thunderbird.uc.js
    // @namespace      ithinc#mozine.cn
    // @description    External Applications
    // @include        main
    // @compatibility  Firefox 3.5.x
    // @author         ithinc
    // @version        20091212.0.0.1 Initial release
    // ==/UserScript==
    
    /* :::: External Applications :::: */
    
    var gExternalApplications = {
      type: 'button', //'menu' or 'button'
      insertafter: 'urlbar-container',
    
      apps: [
        
        {name: 'Thunderbird', path: 'C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe'},
       
      ],
    
      init: function() {
        for (var i=0; i<this.apps.length; i++) {
          if (!this.apps[i].path) continue;
          if (!this.apps[i].args) this.apps[i].args = [];
    
          this.apps[i].path = this.apps[i].path.replace(/\//g, '\\');
    
          var ffdir = Cc['@mozilla.org/file/directory_service;1'].getService(Ci.nsIProperties).get('CurProcD', Ci.nsIFile).path;
          if (/^(\\)/.test(this.apps[i].path)) {
            this.apps[i].path = ffdir.substr(0,2) + this.apps[i].path;
          }
          else if (/^(\.)/.test(this.apps[i].path)) {
            this.apps[i].path = ffdir + '\\' + this.apps[i].path;
          }
        }
    
        if (this.type == 'menu') {
          var mainmenu = document.getElementById('main-menubar');
          var menu = mainmenu.appendChild(document.createXULElement('menu'));
          menu.setAttribute('label', 'Start');
          menu.setAttribute('accesskey', 'a');
    
          var menupopup = menu.appendChild(document.createXULElement('menupopup'));
          for (var i=0; i<this.apps.length; i++) {
            menupopup.appendChild(this.createMenuitem(this.apps[i]));
          }
        }
        else {
          var menubarItems = document.getElementById(this.insertafter);
          var toolbaritem = menubarItems.parentNode.insertBefore(document.createXULElement('toolbaritem'), menubarItems.nextSibling);
    	  toolbaritem.id = 'ExtAppButtons';
          toolbaritem.setAttribute("class", "chromeclass-toolbar-additional");
          toolbaritem.setAttribute("orient", "horizontal");
          for (var i=0; i<this.apps.length; i++) {
            toolbaritem.appendChild(this.createButton(this.apps[i]));
          }
        }
      },
    
      exec: function(path, args) {
        for (var i=0; i<args.length; i++) {
          args[i] = args[i].replace(/%u/g, gBrowser.currentURI.spec);
        }
    
        var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        file.initWithPath(path);
        if (!file.exists()) {
          throw 'File Not Found: ' + path;
        }
    
        if (!file.isExecutable() || args.length==0) {
          file.launch();
        }
        else {
          var process = Cc['@mozilla.org/process/util;1'].getService(Ci.nsIProcess);
          process.init(file);
          process.run(false, args, args.length);
        }
      },
    
      createButton: function(app) {
        if (app.name == 'separator')
          return document.createXULElement('toolbarseparator');
    
        var item = document.createXULElement('toolbarbutton');
        item.setAttribute('class', 'toolbarbutton-1 chromeclass-toolbar-additional');
        item.setAttribute('label', app.name);
        item.setAttribute('image', 'moz-icon:file:///' + app.path + '?size=16');
       // item.setAttribute('oncommand', 'gExternalApplications.exec(this.path, this.args);');
       
       item.addEventListener ('command', function (event) {
    	   if (event.button == 0) {
    		   gExternalApplications.exec(this.path, this.args);
    	   }
       });
       
       // item.setAttribute('tooltiptext', app.name);
        item.path = app.path;
        item.args = app.args;
        return item;
      },
    
      createMenuitem: function(app) {
        if (app.name == 'separator')
          return document.createXULElement('menuseparator');
    
        var item = document.createXULElement('menuitem');
        item.setAttribute('class', 'menuitem-iconic');
        item.setAttribute('label', app.name);
        item.setAttribute('image', 'moz-icon:file:///' + app.path + '?size=16');
      //  item.setAttribute('oncommand', 'gExternalApplications.exec(this.path, this.args);');
      
      item.addEventListener ('command', function (event) {
    	   if (event.button == 0) {
    		   gExternalApplications.exec(this.path, this.args);
    	   }
       });
      
        item.path = app.path;
        item.args = app.args;
        return item;
      }
    };
    gExternalApplications.init();
    Alles anzeigen

    Mal noch eine Frage. Wo taucht denn der Menüeintrag auf?

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 00:18

    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.


    Zitat von BrokenHeart

    Keine Ahnung, was da im Argen liegt

    In Zeile 55 ist noch der Inline-Eventhandler onpopupshowing, auf den in Zeile 36 wohl Bezug genommen wird.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 12. Januar 2025 um 00:00

    BrokenHeart Im Skript aus Beitrag #91 ist in Zeile 55 noch ein schwerer Fall von ondblclick. :) Ansonsten funktioniert das Skript wohl offenbar. Das Symbol sehe ich nicht, ist wohl bei mir nicht vorhanden.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 11. Januar 2025 um 23:41

    Ach, Mensch, grisu2099. Zu spät. Aber Firefox brauchte bei mir gerade eine Ewigkeit, um die Forumsseite nach einem Neustart wieder zu laden.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • milupo
    • 11. Januar 2025 um 23:27
    Zitat von Mitleser

    Funzt das?

    Zeile 9 ist noch anzupassen. Wenn hier die Funktionen Nach oben und Nach unten im Kontextmenü erscheinen (unterstrichene Pfeilsymbole), so funktioniert mit dieser Version nur Nach unten.

Unterstütze uns!

Jährlich (2026)

21,3 %

21,3% (138,31 von 650 EUR)

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