- Firefox-Version
- 139
- Betriebssystem
- Win 11
Hallo, leider komme ich nicht alleine weiter und brauch eure Hilfe.
Dass Script läuft seit FF139 nicht mehr. Woran könnte es liegen?
Mit freundlichen Grüssen
Hallo, leider komme ich nicht alleine weiter und brauch eure Hilfe.
Dass Script läuft seit FF139 nicht mehr. Woran könnte es liegen?
Mit freundlichen Grüssen
Hallo, willkommen im Forum.
Probiere folgende Version:
// ==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 engene button
// @version 2024/07/8
// ==/UserScript==
(function() {
let func = SearchOneOffs.prototype._on_click.toString();
if (func.includes("if (false) {"))
return;
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();
if (!func.includes("this.popup.openSearchForm(event, this.selectedButton.engine, true);"))
return;
func = func.replace(
'this.popup.openSearchForm(event, this.selectedButton.engine, true);',
'this.handleSearchCommand(event, this.selectedButton.engine, true);'
);
func = func.replace(
'lazy.SearchUIUtils',
`this.window.SearchUIUtils`
);
func = func.replace(
'lazy.PrivateBrowsingUtils',
`this.window.PrivateBrowsingUtils`
);
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) {
this.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) {
this.searchbar.handleSearchCommand(event, Services.search.defaultEngine);
}
});
//}, {once: true});
})();
// this._searchbarEngine = this.querySelector(".search-panel-header");
Alles anzeigen
Hallo milupo,
erst mal vielen Dank für deine rasche Hilfe. Leider geht das Script aber auch nicht. Mit dem FF138 geht es noch, seit dem update nicht. Habe auch die FF Script Anpassungen überprüft.
Stelle ich in about config: -- security.browser_xhtml_csp.enabled -- auf false funktionieren beide Scripte.
Aber das sollte aus Sicherheitsgründen(wenn ich das richtig verstehe) auf true stehen.
ERLEDIGT.
Hatte das unter der Rubrik
- Funktionelle Änderungen am Firefox durch Skripte
übersehen.
Nochmals vielen Dank für die rasche Antwort.
ZitatAb Firefox Version 139 muss der neue Eintrag in about:config:
security.allow_unsafe_dangerous_privileged_evil_eval
auf true umgestellt werden, damit manche Skripte wieder funktionieren.
Stelle ich in about config: -- security.browser_xhtml_csp.enabled -- auf false funktionieren beide Scripte.
Aber das sollte aus Sicherheitsgründen(wenn ich das richtig verstehe) auf true stehen.
Ja, dem ist so. Ich habe das aber nicht überprüft. Ich verstehe auch nicht allzu viel von JavaScript und ich habe das Skript direkt von der Seite des Autors übernommen, der es bereits für Fx 139 angepasst hatte.
security.allow_unsafe_dangerous_privileged_evil_eval betrifft die Funktionen eval() und Function(), die als unsicher gelten. Damit beide Funktionen verwendet werden können, muss diese Einstellung auf false gesetzt werden. Diese Einstellung wird es aber irgendwann nicht mehr geben, bis dahin muss ein Skript, dass mindestens eine der beiden Funktionen verwendet, umgebaut sein, damit es weiterhin funktioniert.
Ach, habe gerade gesehen, dass in Zeile 22 Function() vorkommt, also ist die Einstellung security.allow_unsafe_dangerous_privileged_evil_eval doch für dieses Skript relevant.
Bitte mal testen.
// ==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);
}
});
})();
Alles anzeigen
Das Skript ist eigentlich überhaupt nicht mehr notwendig: Einfach Shift+Enter drücken, wenn der Fokus (Cursor) im Suchfeld ist. Oder was kann das Skript, was darüber hinaus geht?
Diese Einstellung wird es aber irgendwann nicht mehr geben
Naja, Mozilla hat sie ja extra neu eingeführt.
was kann das Skript, was darüber hinaus geht?
Mit Linksklick der Maus öffnet sich die Suchseite.
PS:
Es ist natürlich immer besser, wenn das Skript angepasst wird soweit das möglich ist.
Naja, Mozilla hat sie ja extra neu eingeführt.
Und du meinst, sie wird dann immer gelten? Diese Einstellung ermöglicht es mit dem Wert true, eine Sicherheitsfunktion außer Kraft zu setzen. Ich glaube nicht, dass sie ewig bestehen bleibt.
sie wird dann immer gelten?
Für ewig ist gar nichts
eine Sicherheitsfunktion außer Kraft zu setzen
Nur meine pers. Meinung!
Wenn die sooo gravierend wäre, dann hätte Mozilla das mit Sicherheit nicht gemacht, auch nicht für ein paar Wochen.
Aber evtl. kann Sören ja noch etwas dazu sagen.
Für ewig ist gar nichts
Eben. Und man kann da schon doch darauf hinweisen, auch wenn eine Änderung noch in weiter Ferne zu sein scheint.
Diese Option wurde explizit für diese Art User-Scripts eingeführt, wie sie unter anderem in unserem Forum bereitgestellt wird. Dass die Option entfernt wird, ist also in etwas so wahrscheinlich wie eine Entfernung von toolkit.legacyUserProfileCustomizations.stylesheets. Auch wenn Mozilla diese Art von Anpassung offiziell nicht unterstützt, wollen sie dieser sehr speziellen Community auch keine Steine in den Weg legen.
Da habe ich wohl etwas missverstanden, denn ich dachte, es gäbe da nur eine Galgenfrist, solange wie es noch Skripte gibt, die eval() oder Function() verwenden.
was kann das Skript, was darüber hinaus geht?
Mit Linksklick der Maus öffnet sich die Suchseite.
Danke. Ich sag ja, das Skript ist nicht mehr nötig …
This script works fine with the original author's loader; the issue should be with your loader not supporting the @sandobx annotation.