Habe mir gerade so einige Skripte von alice0775 aber auch von Endor8.
Ich glaube, diese Diskussion bringt nichts!
Schaut Euch die verschiedenen Skripte an, dann werdet Ihr sehen, was ich meine.
Es bleibt alles, wie es ist.
Es wird von einigen Skripten dutzende individuell angepasste Versionen geben und wir werden daran nichts,
aber auch gar nichts ändern.
Beiträge von Mira_Belle
-
-
Es ist einfach unübersichtlicher.
Findest Du? Ich nicht!
Zumal es für mich den Vorteil hat, alles für "eine" Funktion in einer Datei zu haben.
Es darf halt nicht ausarten und "Styles" sollten dann wirklich nur in einem CSS-Block definiert werden.
Den so manches geht auch ganz und gar in JavaScript! Darauf sollten wir dann halt verzichten.
Ach, und für mich spricht noch etwas für CSS im Block!
Es lassen sich viel einfacher Variablen definieren, damit ein User eben nicht im Code rumbasteln muss!Siehe z.B. "BookmarkCount.uc.js", "Scrollbaruc..js" oder "UndoListInTabmenuToo.uc.js".
Und auch im "Appmenu.uc.js", egal was für eine Version da zur Anwendung kommt.
Bei all diesen Skripten gibt es ganz am Anfang einen Konfigurationsbereich,
und auch recht viel CSS findet Anwendung, sei es in einem Block oder eingebettet.Ach, kleiner Nachtrag!
Ich habe 32 CSS-Dateien und 39 JS-Dateien.
Wenn ich nun für alle JS-Dateien auch noch extra CSS erstellen würde, würde ich den Überblick verlieren.
CSS ist bei mir nur für das Design des Firefox zuständig, Designelemente für JavaScript sind in den Skripten.
Also klar definiert und getrennt. -
..., dass CSS in Scripten kann, aber eigentlich nicht optimal ist.
Das trift auf jeden Fall beim erstellen von Pages zu!
Da wird schön getrennt zwischen HTML, JavaSkcipt und CSS!
Das sind aber dann auch meistens große Projekte, wo z.B. JavaScript und auch teilweise CSS seitenübergreifend angewendet werden.
Da würde ein File sehr bald total unübersichtlich werden, wenn alle drei Codes darin verwendet werden würden.Bei so kleinen Anwendungen, wie wir sie für den Firefox verwenden ist es gar nicht schlimm, wenn JavaScript und CSS
in den Files Verwendung finden.Wir müssten uns nur darauf einigen, anstatt Designvorhaben in JavaScript wirklich nur in CSS einzubinden!
Denn da hat Horstmann absolut recht, die Basis, also das JavaScript könnte immer gleich sein,
nur das CSS wäre dann individuell! -
Tja, da wollte ich ja hin, aber alle Ansätze dazu wurden abgeschmettert.
Somit ist es mir jetzt egal, und an bitten am Header oder ähnlichem nichts zu ändern hält sich ja auch keine Sau!
Da werden Skripte miteinander verwurschtelt, "aus zwei mach eins" obwohl in beiden Skripten gleiche Variablen genutzt werden,
Versionsnummern werden nicht übernommen oder gar gelöscht, und Quellenangaben sind ja auch nur Ballast.Mir egal, wenn das Skript zu retten ist, helfe ich, wenn nicht, lese ich den nächsten Beitrag.
-
Sorry, wenn ich Dir gegens Schienbein treten muss!
Es mag ja sein, dass beide Skripte für DICH irgendwie zusammen gehören, tun sie aber nicht!!
In beiden "Teilen" kommen gleiche Bezeichnungen diverser Variablen vor,
z.B. menuCount und menuitemCount
Das kann zu Überschneidungen führen!Lass die Skripte doch einfach getrennt, sollte EIN Skript nicht mehr funktionieren,
ist es viel einfacher, die Ursache zu finden und zu beheben! -
... kann aber mangels Kenntnisse nicht einschätzen ab wann bei folgenden Updates von Firefox da wieder Probleme auftauchen könnten.
Das kann ich auch nicht, aber es wird definiv bei den allermeisten Skripten passieren, dass Mozilla etwas ändert und das Skript,
dass auf interne Funktionen zugreift oder erweitert oder, oder, wieder angepasst werden muss.
So ist es nun mal.Daher bleibe ich wohl bei der Version die Endor übersetzt hat,
Das Skript? => MultiRowTabLiteforFx.uc.js
... auch wenn mir dort ein paar Feinheiten fehlen
Was wäre das denn?
-
-
Es sind zwei unterschiedliche Skripte
Und wenn ich es richtig sehe, ist Endors Version eine sehr aktuelle.
Modifizierbar sind alle Versionen!
Kommt darauf an, was Du willst.
Würde aber Endors Version empfehlen, da diese auch weiter gepflegt wird. -
Bitte mal testen.
JavaScript
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 // @async true // @sandbox true // @compatibility 139 // @version 2025/02/02 add @sandbox // @version 2025/02/04 23:00 Bug 1880913 - Move BrowserSearch out of browser.js // @version 2024/07/14 fix add search engine button // @version 2024/07/8 // ==/UserScript== (function() { // Original function reference const originalOnClick = SearchOneOffs.prototype._on_click; // Modified function SearchOneOffs.prototype._on_click = function(...args) { if (originalOnClick.toString().includes("if (false) {")) { return originalOnClick.apply(this, args); } // Modify the behavior here directly if (!this.textbox.value) { // Your custom logic here } else { return originalOnClick.apply(this, args); } }; })(); (function() { // Original function reference const originalOnCommand = SearchOneOffs.prototype._on_command; // Modified function SearchOneOffs.prototype._on_command = async function(...args) { if (!originalOnCommand.toString().includes("this.popup.openSearchForm(event, this.selectedButton.engine, true);")) { return originalOnCommand.apply(this, args); } // Modify the behavior here directly this.handleSearchCommand(args[0], this.selectedButton.engine, true); // Replace lazy references const searchUtils = this.window.SearchUIUtils; const privateBrowsingUtils = this.window.PrivateBrowsingUtils; // Your custom logic here }; })(); (function() { let PSAC = document.getElementById("PopupSearchAutoComplete"); PSAC.addEventListener("click", function(event) { if (event.button == 2) { return; // Ignore right clicks } 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) { this.searchbar.handleSearchCommand(event, Services.search.defaultEngine); } }); PSAC.addEventListener("keydown", function(event) { if (event.keyCode !== KeyEvent.DOM_VK_RETURN) { return; // Ignore non-Return key presses } let button = event.originalTarget.closest(".search-panel-header"); if (!button) { return; } if (!this.searchbar.value) { this.searchbar.handleSearchCommand(event, Services.search.defaultEngine); } }); })();
-
Da muss ein Profi drann!
Es gibt einfach zu viele Möglichkeiten, wo die Ursache begraben liegen könnte.
1. Änderung oder Entfernung der ChromeUtils.registerWindowActor APIFirefox hat die registerWindowActor-API in internen Scripten teilweise umgestellt oder entfernt. Es kann sein, dass:
- Die Registrierung über ChromeUtils.registerWindowActor für about:addons nicht mehr erlaubt ist.
- Die matches: ["about:addons"]-Syntax keine Wirkung mehr hat oder blockiert wird.
2. Änderungen an AddonManager.sys.mjs oder dessen Export
Es ist möglich, dass sich in Firefox 139 die API oder der Pfad des Moduls AddonManager.sys.mjs geändert hat:
- Exporte wie getAddonByID() könnten verlagert, umbenannt oder entfernt worden sein.
- Die sys.mjs-Module könnten intern reorganisiert worden sein, z. B. in addonManager.mjs.
3. Strengere Isolierung von about:addons
Mozilla isoliert zunehmend about:-Seiten, um Manipulationen zu verhindern. Das führt dazu, dass DOM-Änderungen via contentWindow oder JSWindowActorChild dort nicht mehr zugelassen werden.
➡ Symptom: handleEvent wird nie ausgelöst, oder view-loaded feuert nicht.
Und es gibt noch weitere Fallstricke.
Kurz, das Ding übersteigt bei weitem meine Möglichkeiten. -
Warum in Gottes Namen frickelst Du zwei Skripte zusammen, die gar nicht zusammen gehören?
Magst Du selber basteln?
Schau mal hier.Wenn Du so gar nicht zurechtkommst, werde ich Dir natürlich helfen!
BookmarkCount funktioniert, nehme ich an. -
Och kommt schon, ein kleiner Scherz!
Ein Hamburger für's Hamburgermenü!
Erkennt man das wirklich nicht?Und das "Smiley", auch nicht verräterisch?
-
Seit einem Update zeigt er so ein komisches Symbol in der Taskleiste an!
-
-
Heute Morgen hat Mozilla den Firefox 139.0.1 freigegeben.
-
Stoiker Hier das gefixte Skript für die "Anzeige"!
Bitte das Skript so lassen, damit, wenn wieder Fehler auftreten, man nachvollziehen kann, was schon geändert wurde und wannJavaScript
Alles anzeigen// Fügt in den Lesezeichen Ordner ganz oben die Anzahl von Links und Unterordner hinzu. // 2025.05.29 Bug Fix by Mira Bellenbaum (function () { if (!window.gBrowser) return; function setFunction() { PlacesViewBase.prototype._mayAddCommandsItems = function PVB__mayAddCommandsItems(aPopup) { let hasMultipleURIs = false; let menuitemCount = 0; let menuCount = 0; if (aPopup._placesNode.childCount > 0) { for (let item of aPopup.children) { if (item._placesNode) { if (item.localName == "menuitem") { menuitemCount++; } else if (item.localName == "menu") { menuCount++; } } } if (menuitemCount > 0 || menuCount > 0) { hasMultipleURIs = true; } } if (!hasMultipleURIs) { aPopup.setAttribute("nofooterpopup", "true"); if (aPopup._endOptOpenAllInTabs) { aPopup.removeChild(aPopup._endOptOpenAllInTabs); aPopup._endOptOpenAllInTabs = null; aPopup.removeChild(aPopup._endOptSeparator); aPopup._endOptSeparator = null; } return; } aPopup.removeAttribute("nofooterpopup"); if (!aPopup._endOptOpenAllInTabs) { aPopup._endOptSeparator = document.createXULElement("menuseparator"); aPopup._endOptSeparator.className = "bookmarks-actions-menuseparator"; aPopup.insertBefore(aPopup._endOptSeparator, aPopup.firstChild); aPopup._endOptOpenAllInTabs = document.createXULElement("menuitem"); aPopup._endOptOpenAllInTabs.className = "openintabs-menuitem"; if (this.options?.extraClasses?.entry) { aPopup._endOptOpenAllInTabs.classList.add( this.options.extraClasses.entry ); } aPopup._endOptOpenAllInTabs.addEventListener("command", function(event) { PlacesUIUtils.openMultipleLinksInTabs(this.parentNode._placesNode, event, PlacesUIUtils.getViewForNode(this)); }); aPopup._endOptOpenAllInTabs.addEventListener("click", function(event) { checkForMiddleClick(this, event); event.stopPropagation(); }); // aPopup._endOptOpenAllInTabs.setAttribute( // "oncommand", // "PlacesUIUtils.openMultipleLinksInTabs(this.parentNode._placesNode, event, " + // "PlacesUIUtils.getViewForNode(this));" // ); // aPopup._endOptOpenAllInTabs.setAttribute( // "onclick", // "checkForMiddleClick(this, event); event.stopPropagation();" // ); aPopup.insertBefore(aPopup._endOptOpenAllInTabs, aPopup.firstChild); } let label = menuCount + " Ordner"; label += " / " + menuitemCount + " Link"; if (menuitemCount != 1) { label += "s"; } if (menuitemCount == 1) { label += " -> Link in Tab öffnen."; } else if (menuitemCount > 1) { label += " -> Links in Tabs öffnen."; } aPopup._endOptOpenAllInTabs.setAttribute("label", label); }; } setTimeout(function () { setFunction(); }, 50); })();
-
Oh, das zweite Skript benutze ich ja auch, nur ist mir noch gar nicht aufgefallen, dass die Funktion gar nicht mehr geht.
Werde mich darum bemühen, dauert halt.
Habe z.Z. nur wenig Zeit!
Dieser Teil muss aktualisiert werden.JavaScriptaPopup._endOptOpenAllInTabs.setAttribute( "oncommand", "PlacesUIUtils.openMultipleLinksInTabs(this.parentNode._placesNode, event, " + "PlacesUIUtils.getViewForNode(this));" ); aPopup._endOptOpenAllInTabs.setAttribute( "onclick", "checkForMiddleClick(this, event); event.stopPropagation();" ); aPopup.insertBefore(aPopup._endOptOpenAllInTabs, aPopup.firstChild);
-
-
Ach nee.
Du hast das mit den Pfeilen doch selbst verursacht!!!
Lösche mal alles "unter" /* Pfeil */
und ersetze es einfach NUR durch menupopup > menu::after {
Es sollte dann so aussehen:CSS/* Pfeil */ menupopup > menu::after { content: "" !important; background-image: url("${ProfilePath}/${icon3}")!important; height: ${cs_icon_size} !important; height: ${cs_icon_size} !important; fill: ${cs_icon_color_3} !important; }
Nichts im Skript selber ändern, wenn Du nicht genau weißt, welche Auswirkungen es hat.
Für eigne Anpassungen reicht doch der "Configbereich" ganz am Anfang des Skriptes. -
FuchsFan Zeig her "Dein" Skript
und gib mir bitte auch die Symbole zum Testen.
Danke.