Beiträge von milupo
-
-
Na, dann probiere mal meine Version:
JavaScript
Alles anzeigen// ==UserScript== // @name newTabButtonUndoTabList.uc.js // @description Bei Rechtsklick auf die Neuen Tab Schaltfläche, wird im Kontextmenü // @description der Eintrag zum Wiederherstellen des zuletzt geschlossenen Tabs angezeigt. // @description Von BrokenHeart - camp-firefox.de wieder lauffähig gemacht // @adresse https://www.camp-firefox.de/forum/thema/112673-userchrome-js-scripte-f%C3%BCr-den-fuchs-diskussion/?postID=1223749#post1223749 // @include main // ==/UserScript== (function () { if (!window.gBrowser){ return; } gBrowser.tabContainer.addEventListener('click', function (e) { if (e.originalTarget.id != 'tabs-newtab-button') return; switch (e.button) { case 1: undoCloseTab(0); break; case 2: UCT.makePopup(e); event.preventDefault(); break; } }, false); })(); var UCT = { init: function () { var mp = document.createXULElement("menupopup"); mp.id = "undo-close-tab-list"; //mp.setAttribute("onpopupshowing", "UCT.onpopupshowing(event);"); mp.addEventListener('popupshowing', function(event) { UCT.onpopupshowing(event); }, true); mp.setAttribute("placespopup", true); mp.setAttribute("tooltip", "bhTooltip"); mp.setAttribute("popupsinherittooltip", true); document?.getElementById("mainPopupSet")?.appendChild(mp); }, makePopup: function (e) { if (SessionStore.getClosedTabCountForWindow(window) != 0) { document.getElementById("undo-close-tab-list").openPopupAtScreen(e.screenX +2, e.screenY +2, false); } else { console.log("--- Es gibt keinen Tab, der wiederhergestellt werden kann ---"); } }, onpopupshowing: function (e) { var popup = e.target; while (popup.hasChildNodes()) popup.removeChild(popup.firstChild); let undoItems = SessionStore.getClosedTabDataForWindow(window); undoItems.map(function (item, id) { var m = document.createXULElement('menuitem'); m.setAttribute('label', item.title); m.setAttribute('image', item.image ); m.setAttribute('class', 'menuitem-iconic bookmark-item'); //m.setAttribute('oncommand', 'undoCloseTab(' + id + ')'); let strCommand = 'undoCloseTab(' + id + ')'; m.addEventListener('command', function(event) { Function("return " + strCommand)(); }, true); popup.appendChild(m); }); popup.appendChild(document.createXULElement("menuseparator")); m = document.createXULElement("menuitem"); m.setAttribute("label", "Chronik in der Sidebar öffnen"); m.setAttribute("image", "chrome://browser/skin/history.svg"); m.setAttribute("class", "menuitem-iconic"); //m.setAttribute("oncommand", "SidebarUI.toggle('viewHistorySidebar');"); m.addEventListener('command', function(event) { SidebarController.toggle('viewHistorySidebar'); }, true); popup.appendChild(m); }, }; setTimeout(function() { UCT.init(); },250); -
Problem, es wird kein Profil angelegt!
Kann gar nicht sein, ohne Profil startet Firefox gar nicht. Bei einer Neuinstallaation würde wahrscheinlich sogar ein neues angelegt werden. Sei einigen Jahren ist default-release Standard. Bei einer Neuinstallation wäre das dann default-release-1, default-release-2, default-release-3 usw.
Huh, wie vorgearbeitet?
Wahrscheinlich meint er, dass wir als Benutzer vom Nightly bei den Anpassungen der Skripts im Vorlauf sind.
-
Folgendes Skript tut es in der Nightly (allerdings schon seit 139) nicht mehr.
JavaScriptWas tut es nicht mehr? Bei Rechtsklick auf den Neuen-Tab-Button erscheint das Kontextmenü mit Einträgen. Die kann ich als Tabs öffnen. Der Eintrag Chronik in Sidebar öffnen ist auch da und funktioniert auch. Was muss das Skript denn sonst noch machen? Ich verwende es sonst nicht.
-
Sollte funktioniert haben. Starte mal Firefox im Fehlerbehebungsmodus.
-
Evtl. liegt da der Fehler
Wofür steht denn in dem Powershell-Skript $_.Value.Default? Deckt diese Variable alle Profilnamen ab? Also nicht nur xxxxxx.default, sondern auch xxxxxx.default-release-1 usw.
Kann man die aktuelle Nightly irgendwo herunterladen?
Wie hattest du denn eigentlich denn das Update gemacht? Über den Aktualisierungseintrag/Pfeil im Hamburger-Menü?
Hast du denn Firefox mal im Fehlerbehebungsmodus gestartet? Dabei wird der Skript-Cache geleert.
-
Da bleibt dir nichts anderes übrig, als die Vorbereitung für Skripte noch einmal zu machen bzw. zu überprüfen.
-
Hast du eventuell etwas verstellt, als du mit deinem Powershell-Skript experimentiert hast?
-
Ich wüsste nicht, wieso jetzt eine Einstellung in about:config notwendig wäre.
-
Wir haben ja auch vorgearbeitet...)
Mira-Belle bezieht sich auf das Nightly. Wenn sie das verwendet, hat sie wahrscheinlich ebenfalls vorgearbeitet. Und wenn sie das nicht getan hat, sollten zumindest einige der Skripte noch funktionieren.
Mira_Belle Hast du irgendetwas an den notwendigen Skriptdateien geändert? Also an der userChrome.js im Profil und an den Dateien/dem Ordner userChromeJS im Installationsverzeichnis? Hast du ein neues Profilverzeichnis oder Installationsverzeichnis?
-
Aktuell funktionieren in der Nightly 140.0a1 (2025-04-29) (64-Bit) gar keine Skripte mehr!
Muss da was unter about:config umgestellt werden?Bei mir funktionieren alle Skripte.
-
Dann sollte er das auch schreiben. Er hat bisher 1001 Beiträge im Forum geschrieben. Da sollte man davon ausgehen können, dass er die Oberfläche von Firefox kennt.
Das erstellt nur im Hamburger-Menü einen Eintrag.
Du kannst Sorbisch?

-
Und da willst du das Symbol in der Adressleiste gehabt haben? Kann ich irgendwie nicht glauben. Der erste Teil des Skripts sorgt dafü0, dass das Symbol in der Symbolleiste erscheint und der entsprechende Code von dort ausgeführt wird. Der zweite Teil sorgt dafür, dass der entsprechende Code aus dem Menü Datei ausgeführt wird.
-
wie bringe ich den Button weder in die Adressleiste?
Ist denn das überhaupt möglich? Bei mir geht das nicht. In die Symbolleiste, in die Navigationsleiste oder in per JavaScript geschaffene Symbolleisten, ja. Aber in die Adressleiste?
-
Folgendes Script funktioniert in FF 138 nicht mehr bzw. erfolgt kein Start.
Diese Version sollte funktionieren:
JavaScript
Alles anzeigen// ==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: 'Betterbird', path: "C:\\Program Files\\Betterbird\\betterbird.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 ('click', 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 ('click', function (event) { if (event.button == 0) { gExternalApplications.exec(this.path, this.args); } }); item.path = app.path; item.args = app.args; return item; } }; gExternalApplications.init(); -
Ach ja, da fiel mir auf, dass das Skript "SkipToTopAndBottom.uc.js" in der Nightly nicht mehr richtig funktionierte
Ich habe hier das von dir als auch das von Andreas. Bei dem von dir sind bei mir noch nicht die Inline-Eventhandler beseitigt, deswegen funktioniert es nicht mehr.
-
Ja, dann weiß ich auch nicht.
Ich werde jetzt mal am Wochenende in fünfer Versions-Schritten den Firefox testen.
Ja, das kannst du mit dem oben von schlingo erwähnten mozregression machen.
-
Benutzerskripte?
-
Überhaupt keins? Auch Themes gehören zu den Add-ons.
-
Ich nutze keine Addons.
Und in der Vergangenheit? Als es das von dir jetzt erwartete Verhalten gab?