kann man das Script so einstellen, dass der Suchbegriff nach drücken von Enter nicht sofort gelöscht wird? Ev. will man ja noch andere Suchmaschinen befragen, dann spart man sich das erneute eintippen.
Dann müsstest du mal dieses Script testen, ist auf eigene Gefahr, weil mit KI überarbeitet, und die Betriebserlaubnis hierzu noch nicht im Forum beantragt und genehmigt wurde.
CSS
// ==UserScript==
// @name Searchbar Auto-Clear + Go-Pfeil (Firefox 150+)
// @description Auto-leeren + sichtbarer Go-Pfeil
// @include chrome://browser/content/browser.xhtml
// @async true
// @version 2026/03/12
// ==/UserScript==
(function() {
const waitingToClear = 15000; // Zeit bis automatisches Löschen (ms) | 0 = deaktiviert
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
SearchService: "moz-src:///toolkit/components/search/SearchService.sys.mjs",
});
// === CSS für Go-Pfeil ===
if (Services.prefs.getBoolPref("browser.search.widget.new", false)) {
let style = `
#searchbar-new {
.urlbar-go-button {
display: flex !important;
opacity: 0.8 !important;
cursor: pointer !important;
&:hover {
opacity: 1 !important;
}
&:not(:hover) {
opacity: 0.8 !important;
}
}
}
`;
let sss = Cc["@mozilla.org/content/style-sheet-service;1"]
.getService(Ci.nsIStyleSheetService);
// makeURI ist veraltet → Services.io.newURI benutzen
let uri = Services.io.newURI(
"data:text/css;charset=UTF-8," + encodeURIComponent(style)
);
if (!sss.sheetRegistered(uri, sss.AGENT_SHEET)) {
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
}
}
// === AUTO-CLEAR + GO-BUTTON ===
function initSearchbar() {
let searchbar = window.document.getElementById("searchbar-new");
if (!searchbar || searchbar.dataset.autoClearAttached) return;
searchbar.dataset.autoClearAttached = "true";
console.log("✅ Searchbar Auto-Clear + Go-Pfeil aktiviert");
const textbox = searchbar.inputField;
let timeoutId;
// 1. AUTO-CLEAR nach Timeout
if (waitingToClear > 0) {
textbox.addEventListener("input", () => {
clearTimeout(timeoutId);
timeoutId = setTimeout(() => {
if (textbox.value.trim()) {
textbox.value = "";
textbox.dispatchEvent(new Event("input", { bubbles: true }));
console.log("⏰ Auto-Clear aktiviert");
}
}, waitingToClear);
});
}
// 3. GO-BUTTON Patch
searchbar.goButton?.addEventListener("click", patchEmptySearch, false);
textbox.addEventListener("keydown", patchEmptySearch, false);
}
// === LEER-SUCHE ermöglichen ===
async function patchEmptySearch(event) {
if (KeyboardEvent.isInstance(event) && event.keyCode !== KeyEvent.DOM_VK_RETURN)
return;
let searchbar = window.document.getElementById("searchbar-new");
if (searchbar.value !== "") return;
if (!event.originalTarget.classList.contains("urlbar-input") &&
!event.originalTarget.classList.contains("urlbar-go-button"))
return;
let searchMode = searchbar.searchMode;
let engine;
if (!searchMode) {
engine = await lazy.SearchService.getDefault();
} else {
let label = searchMode.engineName;
engine = await lazy.SearchService.getEngineByName(label);
}
let where = whereToOpen(event);
let url = engine.searchForm;
window.openTrustedLinkIn(url, where);
}
function whereToOpen(aEvent) {
let where = "current";
const newTabPref = Services.prefs.getBoolPref("browser.search.openintab", false);
if (aEvent?.originalTarget.classList.contains("urlbar-go-button")) {
where = BrowserUtils.whereToOpenLink(aEvent, false, true);
if (newTabPref && !aEvent.altKey && where == "current" && !gBrowser.selectedTab.isEmpty) {
where = "tab";
if ((KeyboardEvent.isInstance(aEvent) && aEvent.ctrlKey) ||
(MouseEvent.isInstance(aEvent) && aEvent.button == 1))
where = "tabshifted";
}
}
return where;
}
// === START ===
setTimeout(initSearchbar, 1000);
new MutationObserver(initSearchbar).observe(document, {
childList: true,
subtree: true
});
})();
Alles anzeigen
