Nein weiter nichts. Hier habe ich den Button in der Tabbar.
Das habe ich eben bei Github auf 1 navbar geändert.
Beiträge von Endor
-
-
Hallo bege
Vielen Dank für Deine Version.
Habe die jetzt mal bei mir hoch geladen.userChrome.js/Firefox 128/Appmenu.uc.js at master · Endor8/userChrome.jsSkripte für die Firefox-Erweiterung userChromeJS. Contribute to Endor8/userChrome.js development by creating an account on GitHub.github.comHinweis:
Ich habe mit milupo Hilfe noch den Eintrag zum Öffnen der Entwickler Werkzeuge hinzugefügt.
Zeile 24 habe ich so angepasstCodefileManager: '', // fileManager: 'C:\\Program files\\FreeCommander XE\\FreeCommander.exe', // Parameter für Dateimanager oder leer ('')
Des weiteren habe ich beim Eintrag Beenden ein identisches aber größeres Symbol eingebaut.
Finde das past besser zu den anderen.
Was sagst Du dazu?
Mfg.
Endor -
Mira_Belle
Ohne Appmenu_edit.uc.js vorläufig.Mfg.
Endor -
Web-Entwickler
Auch von mir vielen Dank für den Code.
An dem versuche ich mich schon den ganzen Nachmittag.
Mit Deinem passt es, und funktioniert bestens.
Vielen Dank.
Mfg.
Endor -
-
Auweia da hätte ich eigentlich selbst drauf kommen müssen.
Hand vors Gesicht hau.
Vielen Dank, Sören Hentzschel und milupo.
Mfg.
Endor -
-
Es gibt noch ein Script vom selben Autor:
Code
Alles anzeigen// ==UserScript== // @name patchForBug1904014_allow_search_oneoff_with_empty_text.uc.js // @description undoing Bug 1904014 - Remove function to do an empty search using the search bar one-off buttons. // @include chrome://browser/content/browser.xhtml // @compatibility 129 // @version 2024/07/14 fix add search engene button // @version 2024/07/8 // ==/UserScript== (function() { let func = SearchOneOffs.prototype._on_click.toString(); func = func.replace( 'if (!this.textbox.value) {', 'if (false) {' ); SearchOneOffs.prototype._on_click = new Function( func.match(/\(([^)]*)/)[1], func.replace(/[^{]*\{/, '').replace(/}\s*$/, '') ); })(); (function() { let func = SearchOneOffs.prototype._on_command.toString(); func = func.replace( 'if (!this.textbox.value) {', 'if (false) {' ); func = func.replace( 'if (target.classList.contains("searchbar-engine-one-off-add-engine")) {', `if (target.classList.contains("searchbar-engine-one-off-add-engine")) { const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { SearchUIUtils: "resource:///modules/SearchUIUtils.sys.mjs", });` ); let AsyncFunction = Object.getPrototypeOf(async function(){}).constructor; SearchOneOffs.prototype._on_command = new AsyncFunction( func.match(/\(([^)]*)/)[1], func.replace(/[^{]*\{/, '').replace(/}\s*$/, '') ); })(); (function() { let PSAC = document.getElementById("PopupSearchAutoComplete"); //PSAC.addEventListener("popupShowing", event => { PSAC.addEventListener("click", event => { if (event.button == 2) { // Ignore right clicks. return; } let button = event.originalTarget.closest("[class~='searchbar-engine-one-off-add-engine]"); if (button) { return; } button = event.originalTarget.closest(".search-panel-header"); if (!button) { return; } if (!this.searchbar.value) { BrowserSearch.searchBar.handleSearchCommand(event, Services.search.defaultEngine); } }); PSAC.addEventListener("keydown", event => { if (event.keyCode !== KeyEvent.DOM_VK_RETURN) { // Ignore right clicks. return; } let button = event.originalTarget.closest(".search-panel-header"); if (!button) { return; } if (!this.searchbar.value) { BrowserSearch.searchBar.handleSearchCommand(event, Services.search.defaultEngine); } }); //}, {once: true}); })(); // this._searchbarEngine = this.querySelector(".search-panel-header");
Wurde eben erst veröffentlicht.
Mfg.
Endor -
Ok. Packe das Script bei Thunderbird dazu.
Das andere muss ich mir erst mal in Ruhe durch den Kopf gehen lassen.
Klingt ja eigentlich sehr gut aber die Zeit das so umzusetzen....
Mal sehen.
Trotzdem vielen Dank für Deinen Vorschlag.
Mfg.
Endor -
Läuft auch im Thunderbird
Danke für den Hinweis.
milupo
Soll ich das Script auch in den Ordner für Thunderbird Scripte bei Github packen? -
Super, ich danke dir.
Gerne. Nochmals danke für Deine Mühe.
Dann lade ich es jetzt hoch.
Edit:
Erledigt - https://github.com/Endor8/userChr…datecheck.uc.js
Mfg.
Endor -
Hallo Amsterdammer !
Alles alles Gute zum Geburtstag.
Vor allem viel Gesundheit aber auch viel Glück und Wohlergehen
wünsche ich Dir von ganzen Herzen.
Mfg.
Endor -
Mira_Belle
vielen Dank.Mfg.
Endor -
Hallo milupo.
Habe nun eine Info eingebaut und eine Deutsche Beschreibung hinzugefügt.
Schau Dir das bitte mal an ob es so passt:Code
Alles anzeigen// ==UserScript== // @name addons_ver_day_updatecheck.uc.js // @description Bei about:addons beim Titel der Erweiterung Versionsinfo und Installationsdatum hinzufügen // @update Anpassung zur Verwendung der ESM-Module mit der Dateiendung .sys.mjs von milupo // @note Wer vor dem Datum der Installation, einen Text haben möchte, Zeile 40 aktivieren // @note und Zeile 41 deaktivieren. (// ← entfernen bzw. hinzufügen) // @include main // ==/UserScript== if (typeof window === "undefined" || globalThis !== window) { this.EXPORTED_SYMBOLS = ["AboutAddonsVerboseChild"]; ChromeUtils.defineESModuleGetters(this, { AddonManager: "resource://gre/modules/AddonManager.sys.mjs", }); try { ChromeUtils.registerWindowActor("AboutAddonsVerbose", { child: { moduleURI: __URI__, events: { DOMDocElementInserted: {}, }, }, matches: ["about:addons"], }); } catch (e) {Cu.reportError(e);} this.AboutAddonsVerboseChild = class extends JSWindowActorChild { handleEvent({type}) { if (type !== "DOMDocElementInserted") return; const win = this.contentWindow; const doc = win.document; doc.addEventListener("view-loaded", () => { const addons = doc.querySelectorAll(".addon-name"); for (let addon of addons) { const addonId = addon.querySelector("a")?.href.slice("addons://detail/".length); if (addonId) AddonManager.getAddonByID(addonId).then(result => { const {version, updateDate} = result; const info = doc.createElement("span"); info.style.fontSize = "1rem"; info.style.fontStyle = "normal"; info.style.fontWeight = "900"; info.style.marginInlineEnd = "8px"; // info.textContent = `${version} - Installation: ${updateDate.toLocaleDateString("de-DE")}`; info.textContent = `${version} - ${updateDate.toLocaleDateString("de-DE")}`; addon.insertAdjacentElement("afterend", info); }).catch(err => Cu.reportError(err)); } }); } }; } else { try { const fileHandler = Services.io.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); const scriptFile = fileHandler.getFileFromURLSpec(Components.stack.filename); const resourceHandler = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler); if (!resourceHandler.hasSubstitution("about-addons-verbose-ucjs")) { resourceHandler.setSubstitution("about-addons-verbose-ucjs", Services.io.newFileURI(scriptFile.parent)); } ChromeUtils.import(`resource://about-addons-verbose-ucjs/${scriptFile.leafName}?${scriptFile.lastModifiedTime}`); } catch (e) {Cu.reportError(e)} }
Mfg.
Endor -
milupo .
Vielen vielen Dank.
Funktioniert bestens. In Firefox 129, Firefox 130b1 und Firefox 131 Nightly getestet.
Darf ich die bei mir in Github hochladen?
Sollten wir im Kopfbereich einen Hinweis auf Deine Änderungen einfügen?
Mfg.
Endor -
Genau das ist es.
Wie gesagt, ohne Änderungen funktioniert es, warum auch immer.
Mit nicht.Hast du in about:config:
browser.addons.showVersionInAboutAddons
extensions.showVersionInAboutAddonsauf true? Bei mir gibt es die übrigens nicht.
Mfg.
Endor -
-
Hallo milupo .
Das script fügt bei about:addons bei den Erweiterungen im jeweiligen Titel
die Versionsnummer und das Installationsdatum hinzu. Lasse das Script jetzt so wie
es ist, da es ja funktioniert. Habe Deine Änderungen probiert, aber das funktioniert
leider nicht.about-addons-verbose.uc.js
Das habe ich nirgendswo gefunden. Der Autor hatte das Script
letzten November bei einer Japanischen Seite hoch geladen.
Da war das nicht dabei.
Mfg.
Endor -
Hallo zusammen, Hallo milupo .
Ich verwende dieses Script hier:Code
Alles anzeigen// ==UserScript== // @name Show addon details in about:addons // @include main // ==/UserScript== if (typeof window === "undefined" || globalThis !== window) { this.EXPORTED_SYMBOLS = ["AboutAddonsVerboseChild"]; ChromeUtils.defineModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm"); try { ChromeUtils.registerWindowActor("AboutAddonsVerbose", { child: { moduleURI: __URI__, events: { DOMDocElementInserted: {}, }, }, matches: ["about:addons"], }); } catch (e) {Cu.reportError(e);} this.AboutAddonsVerboseChild = class extends JSWindowActorChild { handleEvent({type}) { if (type !== "DOMDocElementInserted") return; const win = this.contentWindow; const doc = win.document; doc.addEventListener("view-loaded", () => { const addons = doc.querySelectorAll(".addon-name"); for (let addon of addons) { const addonId = addon.querySelector("a")?.href.slice("addons://detail/".length); if (addonId) AddonManager.getAddonByID(addonId).then(result => { const {version, updateDate} = result; const info = doc.createElement("span"); info.style.fontSize = "1rem"; info.style.fontStyle = "normal"; info.style.fontWeight = "900"; info.style.marginInlineEnd = "8px"; info.textContent = `${version} - ${updateDate.toLocaleDateString("de-DE")}`; addon.insertAdjacentElement("afterend", info); }).catch(err => Cu.reportError(err)); } }); } }; } else { try { const fileHandler = Services.io.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); const scriptFile = fileHandler.getFileFromURLSpec(Components.stack.filename); const resourceHandler = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler); if (!resourceHandler.hasSubstitution("about-addons-verbose-ucjs")) { resourceHandler.setSubstitution("about-addons-verbose-ucjs", Services.io.newFileURI(scriptFile.parent)); } ChromeUtils.import(`resource://about-addons-verbose-ucjs/${scriptFile.leafName}?${scriptFile.lastModifiedTime}`); } catch (e) {Cu.reportError(e)} }
in Zeile 8 steht:
CodeChromeUtils.defineModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm");
die Datei AddonManager.jsm gibt es ja nicht mehr. Wenn ich das umändere auf
AddonManager.sys.mjs diese Datei gibt es, geht es nicht mehr, genau so wie wenn ich diese Zeile entferne.
Konsole sagt die Importregel müsste angepasst werden. Nur wie?Hast Du / Ihr eine Idee?
Mfg.
Endor -
Hallo Artist!
Alles alles Gute zum Geburtstag.
Vor allem viel Gesundheit aber auch viel Glück und Wohlergehen
wünsche ich Dir von ganzen Herzen.
Mfg.
Endor