阅读:2088回复:8
【已解决】【FF72】求修复 【搜索栏滚轮切换搜索引擎.uc】
我是直接从FF60跳到FF67,现在不管用了,这段代码的用处是,搜索栏可以显示当前引擎的图标,并且可以用滑轮切换搜索引擎,求修复,谢谢!
目前72版本,不显示搜索引擎图标,望修复,谢谢! (function() { //Einstellungen - true = ein(aktiviert) false = aus(deaktiviert) //Namen und Symbol der Suchmaschine in der Suchleiste anzeigen const BUTTON_ONLY = false //Nur bei Suchleisten Suchschaltfläche anwenden - Suchmaschinen wechseln mit Scrollrad im Hauptkontextmenü deaktivieren const label = true; //Namen anzeigen const img = true; //Symbol - Favicon anzeigen //Doppelklick auf Suchleiste, um zur Standard Suchmaschine zurück zu kehren const only = false; //Suchleiste leeren und nicht zur Standardsuchmaschine zurückkehren [Neu in Version 0.6] const dbl = true; //Funktion aktivieren const zero = false; //Bei Klick zur obersten Suchmaschine zurückkehren const select = '百度'; //Standard Suchmaschine angeben, zum Beispiel 'DuckDuckGo'. const erase = true; //Nach Suche Suchleiste leeren //[Aktion nach dem Suchen mit der Suchleiste] const auto = true; //Andere Einstellungen verwenden, durch einen Doppelklick auf die Suchleiste //Kontextmenü Suche wechseln mit[~~Suchen] const cxt = true; //Funktion aktivieren const icon = true; //Symbol - Favicon anzeigen const clk = true; //Klicken, um zur Standard Suchmaschine zurückzukehren (Andere Einstellungen verwenden ~ mit Doppelklick auf die Suchleiste) const sync = false; //Suchwort an die Suchleiste senden [Neu in Version 0.7] const hist = true; //Suchwort der Suchchronik der Suchleiste hinzufügen * Es ist OK, wenn die Synchronisation inkorrekt ist [Neu in Version 0.8] //[Verhalten beim Start] * Gilt auch beim Neustart const start0 = false; //Andere Einstellungen verwenden, durch Doppelklick auf die Suchleiste //Konfiguration const scrollRight = true; let bar = document.getElementById('searchbar'); let box = bar.textbox.inputField; let menu = document.getElementById('context-searchselect'); let BSS = Services.search; if(!!dbl) bar.addEventListener('dblclick', ResetE, false); bar.addEventListener('DOMMouseScroll', ChangeE, false); if(!!cxt) menu.addEventListener('wheel', ChangeE, false); if(!!clk) menu.addEventListener('click', function(){ if(!!sync) {box.value = this.searchTerms}else{box.value = box.value} if(!!hist) SyncHistory(); setTimeout(function(){ResetE()}, 0) }, false); window.addEventListener('unload', function uninit() { bar.removeEventListener('dblclick', ResetE, false); bar.removeEventListener('DOMMouseScroll', ChangeE, false); menu.removeEventListener('wheel', function(e){if(!!con) ChangeE(e)} , false); menu.removeEventListener('click', function(){ if(!!sync) {box.value = this.searchTerms}else{box.value = box.value} if(!!hist) SyncHistory(); setTimeout(function(){ResetE()}, 0) } , false); window.removeEventListener('unload', uninit , false); }, false); async function ResetE(){ this.engines = await BSS.getVisibleEngines(); if(!only){ if(!!zero || select == ''){BSS.defaultEngine = this.engines[0] }else{ BSS.defaultEngine = BSS.getEngineByName(select) } } if(!!erase || !!only) box.value = ''; } function CMenu() { let selectedText = menu.searchTerms || window.getSelection().toString(); if (selectedText.length > 15) { let truncLength = 15; let truncChar = selectedText[15].charCodeAt(0); if (truncChar >= 0xDC00 && truncChar <= 0xDFFF) truncLength++; selectedText = selectedText.substr(0, truncLength) + '\u2026'; } var menuLabel = gNavigatorBundle.getFormattedString('contextMenuSearch',[BSS.defaultEngine.name, selectedText]); menu.setAttribute('label', menuLabel); if(!icon || !cxt) return; let style = '@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);#context-searchselect:before{margin:0 -20px 0 5px;content:"";display:inline-block;width:16px;height:16px;background:url('+ BSS.defaultEngine.iconURI.spec +');background-size:contain!important}'; let sspi = document.createProcessingInstruction( 'xml-stylesheet', 'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"' ); document.insertBefore(sspi, document.documentElement); sspi.getAttribute = function(name) { return document.documentElement.getAttribute(name); }; } function SyncHistory(){ let val = menu.searchTerms; let addHistory = function(val){ setTimeout(function(){bar.FormHistory.update({op: "add", fieldname: "searchbar-history", value: val})}, 500); }; let removeHistory = function(callback, val){ bar.FormHistory.update({op: "remove", fieldname: "searchbar-history", value: val}); callback(val); } removeHistory(addHistory, val); } async function ChangeE(event) { if(BUTTON_ONLY && event.originalTarget.className !== 'searchbar-search-button' && event.originalTarget !== menu) return; let dir = (scrollRight ? 1 : -1) * Math.sign(event.detail || event.deltaY); this.engines = await BSS.getVisibleEngines(); let index = this.engines.findIndex(e => e.name === BSS.defaultEngine.name); this.engines[this.engines.length] = this.engines[0] if(index+dir < 0 || index+dir === this.engines.length - 1) return; BSS.defaultEngine = this.engines[index+dir]; } function ShowCurrentE(){ let E = BSS.defaultEngine; if(!!label)box.setAttribute('placeholder', E.name); let icon = bar.querySelector('.searchbar-search-icon'); if(!!img)icon.setAttribute('style', "list-style-image: url('"+ E.iconURI.spec +"') !important; -moz-image-region: auto !important; width: 16px !important; padding: 2px 0 !important;"); } Services.obs.addObserver(observe, "browser-search-engine-modified"); window.addEventListener("unload", () => { Services.obs.removeObserver(observe, "browser-search-engine-modified"); }); Services.obs.addObserver(ob2, "browser-search-service"); window.addEventListener("unload", () => { Services.obs.removeObserver(ob2, "browser-search-service"); }); function observe(aEngine, aTopic, aVerb) { if (aTopic == "browser-search-engine-modified") { aEngine.QueryInterface(Components.interfaces.nsISearchEngine); if(aVerb !== "engine-current" && aVerb !== 'engine-default') return; ShowCurrentE(); CMenu(); } } function ob2(aSubject, aTopic, aData) { if(aData === "init-complete" && aTopic === "browser-search-service") { if(!!start0) ResetE(); ShowCurrentE(); CMenu(); } } if(!auto) return; bar.cmd = bar.doSearch; bar.doSearch = function(aData, aWhere, aEngine) { this.cmd(aData, aWhere, aEngine); ResetE() } ShowCurrentE(); })() |
|
1楼#
发布于:2019-05-25 12:50
(function() { //Einstellungen - true = ein(aktiviert) false = aus(deaktiviert) //Namen und Symbol der Suchmaschine in der Suchleiste anzeigen const BUTTON_ONLY = false //Nur bei Suchleisten Suchschaltfläche anwenden - Suchmaschinen wechseln mit Scrollrad im Hauptkontextmenü deaktivieren const label = true; //Namen anzeigen const img = true; //Symbol - Favicon anzeigen //Doppelklick auf Suchleiste, um zur Standard Suchmaschine zurück zu kehren const only = false; //Suchleiste leeren und nicht zur Standardsuchmaschine zurückkehren [Neu in Version 0.6] const dbl = true; //Funktion aktivieren const zero = false; //Bei Klick zur obersten Suchmaschine zurückkehren const select = '百度'; //Standard Suchmaschine angeben, zum Beispiel 'DuckDuckGo'. const erase = true; //Nach Suche Suchleiste leeren //[Aktion nach dem Suchen mit der Suchleiste] const auto = true; //Andere Einstellungen verwenden, durch einen Doppelklick auf die Suchleiste //Kontextmenü Suche wechseln mit[~~Suchen] const cxt = true; //Funktion aktivieren const icon = true; //Symbol - Favicon anzeigen const clk = true; //Klicken, um zur Standard Suchmaschine zurückzukehren (Andere Einstellungen verwenden ~ mit Doppelklick auf die Suchleiste) const sync = false; //Suchwort an die Suchleiste senden [Neu in Version 0.7] const hist = true; //Suchwort der Suchchronik der Suchleiste hinzufügen * Es ist OK, wenn die Synchronisation inkorrekt ist [Neu in Version 0.8] //[Verhalten beim Start] * Gilt auch beim Neustart const start0 = false; //Andere Einstellungen verwenden, durch Doppelklick auf die Suchleiste //Konfiguration const scrollRight = true; let bar = document.getElementById('searchbar'); let box = bar.textbox.inputField; let menu = document.getElementById('context-searchselect'); let BSS = Services.search; if(!!dbl) bar.addEventListener('dblclick', ResetE, false); bar.addEventListener('DOMMouseScroll', ChangeE, false); if(!!cxt) menu.addEventListener('wheel', ChangeE, false); if(!!clk) menu.addEventListener('click', function(){ if(!!sync) {box.value = this.searchTerms}else{box.value = box.value} if(!!hist) SyncHistory(); setTimeout(function(){ResetE()}, 0) }, false); window.addEventListener('unload', function uninit() { bar.removeEventListener('dblclick', ResetE, false); bar.removeEventListener('DOMMouseScroll', ChangeE, false); menu.removeEventListener('wheel', function(e){if(!!con) ChangeE(e)} , false); menu.removeEventListener('click', function(){ if(!!sync) {box.value = this.searchTerms}else{box.value = box.value} if(!!hist) SyncHistory(); setTimeout(function(){ResetE()}, 0) } , false); window.removeEventListener('unload', uninit , false); }, false); async function ResetE(){ this.engines = await BSS.getVisibleEngines(); if(!only){ if(!!zero || select == ''){BSS.defaultEngine = this.engines[0] }else{ BSS.defaultEngine = BSS.getEngineByName(select) } } if(!!erase || !!only) box.value = ''; } function CMenu() { let selectedText = menu.searchTerms || window.getSelection().toString(); if (selectedText.length > 15) { let truncLength = 15; let truncChar = selectedText[15].charCodeAt(0); if (truncChar >= 0xDC00 && truncChar <= 0xDFFF) truncLength++; selectedText = selectedText.substr(0, truncLength) + '\u2026'; } var menuLabel = gNavigatorBundle.getFormattedString('contextMenuSearch',[BSS.defaultEngine.name, selectedText]); menu.setAttribute('label', menuLabel); if(!icon || !cxt) return; let style = '@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);#context-searchselect:before{margin:0 -20px 0 5px;content:"";display:inline-block;width:16px;height:16px;background:url('+ BSS.defaultEngine.iconURI.spec +');background-size:contain!important}'; let sspi = document.createProcessingInstruction( 'xml-stylesheet', 'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"' ); document.insertBefore(sspi, document.documentElement); sspi.getAttribute = function(name) { return document.documentElement.getAttribute(name); }; } function SyncHistory(){ let val = menu.searchTerms; let addHistory = function(val){ setTimeout(function(){bar.FormHistory.update({op: "add", fieldname: "searchbar-history", value: val})}, 500); }; let removeHistory = function(callback, val){ bar.FormHistory.update({op: "remove", fieldname: "searchbar-history", value: val}); callback(val); } removeHistory(addHistory, val); } async function ChangeE(event) { if(BUTTON_ONLY && event.originalTarget.className !== 'searchbar-search-button' && event.originalTarget !== menu) return; let dir = (scrollRight ? 1 : -1) * Math.sign(event.detail || event.deltaY); this.engines = await BSS.getVisibleEngines(); let index = this.engines.findIndex(e => e.name === BSS.defaultEngine.name); this.engines[this.engines.length] = this.engines[0] if(index+dir < 0) return; BSS.defaultEngine = this.engines[index+dir]; } function ShowCurrentE(){ let E = BSS.defaultEngine; if(!!label)box.setAttribute('placeholder', E.name); let icon = bar.querySelector('.searchbar-search-icon'); if(!!img)icon.setAttribute('style', "list-style-image: url('"+ E.iconURI.spec +"') !important; -moz-image-region: auto !important; width: 16px !important; padding: 2px 0 !important;"); } Services.obs.addObserver(observe, "browser-search-engine-modified"); window.addEventListener("unload", () => { Services.obs.removeObserver(observe, "browser-search-engine-modified"); }); Services.obs.addObserver(ob2, "browser-search-service"); window.addEventListener("unload", () => { Services.obs.removeObserver(ob2, "browser-search-service"); }); function observe(aEngine, aTopic, aVerb) { if (aTopic == "browser-search-engine-modified") { aEngine.QueryInterface(Components.interfaces.nsISearchEngine); if(aVerb !== "engine-current" && aVerb !== 'engine-default') return; ShowCurrentE(); CMenu(); } } function ob2(aSubject, aTopic, aData) { if(aData === "init-complete" && aTopic === "browser-search-service") { if(!!start0) ResetE(); ShowCurrentE(); CMenu(); } } if(!auto) return; bar.cmd = bar.doSearch; bar.doSearch = function(aData, aWhere, aEngine) { this.cmd(aData, aWhere, aEngine); ResetE() } ShowCurrentE(); })() |
|
2楼#
发布于:2019-05-25 14:37
|
|
3楼#
发布于:2019-05-30 17:01
|
|
4楼#
发布于:2019-05-30 18:48
//106行的 if(index+dir < 0) return; //改成 if(index+dir < 0 || index+dir === this.engines.length - 1) return; |
|
5楼#
发布于:2019-05-30 20:37
|
|
6楼#
发布于:2020-01-11 21:26
|
|
7楼#
发布于:2020-01-11 21:44
删掉【.inputField】(不含【】)
|
|
8楼#
发布于:2020-01-11 22:41
|
|