>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >[CB]Автоматически очистить панель поиска после запуска поиска. http://forum.mozilla-russia.org/viewtopic.php?id=53319 |
bunda1 > 16-01-2012 21:42:57 |
Автоматически очистить панель поиска после запуска поиска( Firefox17+ ) Выделить код Код:// Автоматически очистить панель поиска после запуска поиска, от 08.09.2014. .............. var src = "BrowserSearch.searchBar.handleSearchCommand = " + BrowserSearch.searchBar.handleSearchCommand.toString(), res = src.replace("{", '{\nsetTimeout(function(t) t._textbox.value = "", 50, this)'); eval(res); addDestructor(function() eval(src) ); |
Northtech > 10-11-2013 18:26:08 |
Что-то в firefox 26 кнопка перестала работать. |
bunda1 > 10-11-2013 19:12:37 |
Northtech пишет
Попробуй теперь. |
Northtech > 11-11-2013 16:50:05 |
Теперь всё нормально, спасибо. |
fish08 > 19-12-2013 21:00:47 |
А можно что бы происходил сброс на поисковую систему по умолчанию после подачи поиска? |
bunda1 > 19-12-2013 23:16:26 |
fish08 пишет
Выделить код Код:// Автоматически очистить панель поиска после запуска поиска + возврат нужного поисковика, от 19.12.2013. .............. (function() { var func = BrowserSearch.searchBar.handleSearchCommand.toString() .replace(/^\s*function.+{/, '').replace(/}\s*$/, ''); var code = ['setTimeout(function() { textBox.value = ""; }, 500);\ \n var searchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);\ \n searchService.currentEngine = searchService.getEngineByName("Яндекс");\ '].join(''); func += code; BrowserSearch.searchBar.handleSearchCommand = new Function('aEvent', func ); })(); |
fish08 > 20-12-2013 00:29:10 |
bunda1 пишет
Спасибо |
Mishania > 16-09-2014 20:21:29 |
А к новой редакции функцию возврата поисковика прикрутите пожалуйста. |
bunda1 > 16-09-2014 21:23:39 |
Mishania пишет
Выделить код Код:var src = "BrowserSearch.searchBar.handleSearchCommand = " + BrowserSearch.searchBar.handleSearchCommand.toString(), res = src.replace("{", '{\nsetTimeout(function(t) { t._textbox.value = ""; Services.search.currentEngine = Services.search.getEngineByName("Яндекс") }, 50, this);'); eval(res); addDestructor(function() eval(src) ); |
Mishania > 16-09-2014 22:13:08 |
Спасибо. |
Maxut > 19-09-2014 03:03:42 |
bunda1 |
bunda1 > 19-09-2014 12:55:04 |
Maxut Выделить код Код:// Очистить панель поиска нажатием скм по иконке поисковика, от 19.09.2014. .............. (function () { var searchbar = document.getElementById("searchbar"); if ( !searchbar ) return; var engineButton = document.getAnonymousElementByAttribute( searchbar, "anonid", "searchbar-engine-button"); addEventListener('click', function(e) { if ( e.button == 1 ) searchbar.textbox.value = ''; }, false, engineButton ); })(); Но мне кажется очистить панель поиска прокруткой колёсиком мыши на панели поиска будет лучше: Выделить код Код:// Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 19.09.2014. .............. (function () { var searchbar = document.getElementById("searchbar"); if ( !searchbar ) return; addEventListener('DOMMouseScroll', function(){ searchbar.textbox.value = ''; }, false, searchbar ); })(); |
Maxut > 19-09-2014 23:58:07 |
bunda1 |
voqabuhe > 21-10-2014 13:00:17 |
bunda1 пишет
А можно вариант, чтобы очищала и возвращала поисковик, но не колёсиком, а например ЛКМ+ПКМ, как в кнопке Toggle Find+, или любым другим сочетанием? |
bunda1 > 21-10-2014 15:18:19 |
voqabuhe пишет
Выделить код Код:// ЛКМ + ПКМ на панели поиска очищают его, от 21.10.2014. ................................ function clearSearchbar(e) { if ( e.type == "mousedown" ) { if ( e.button == 0 ) this.leftButtonDown = true; if ( e.button == 2 && this.leftButtonDown ) { this.leftButtonDown = false; setTimeout(function() e.target.textbox.value = '', 0); } return; } if ( e.button == 0 ) this.leftButtonDown = false; if ( e.button == 2 && this.leftButtonDown ) e.preventDefault(); }; ["mousedown", "click"] .forEach(function(type) addEventListener( type, clearSearchbar, false, document.getElementById("searchbar") )); |
voqabuhe > 21-10-2014 15:44:47 |
bunda1 |
Dumby > 21-10-2014 16:36:17 |
voqabuhe скрытый текст Выделить код Код:(searchbar => { var flag, engine = Services.search.getEngineByName("Яндекс"); var btn = document.getAnonymousElementByAttribute(searchbar, "anonid", "search-go-button"); addEventListener("click", e => { if (e.button == 2) { if (e.buttons != 1) return; e.preventDefault(); flag = true; searchbar.value = ""; if (Services.search.currentEngine != engine) Services.search.currentEngine = engine; } else if (flag && e.originalTarget == btn) { e.stopPropagation(); e.preventDefault(); flag = false; } }, true, searchbar); addEventListener("mouseleave", () => flag = false, false, btn); })(document.getElementById("searchbar")); |
voqabuhe > 21-10-2014 22:20:29 |
Dumby пишет
Да, именно это и имелось ввиду, и прекрасно работает. Спасибо. Есть только одно маленькое но. Если поместить на панель главного меню, что эту кнопку, что "Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 19.09.2014.", они там работают только до первой перезагрузки . А после их можно оживить только редактированием. Можно это поправить, а то у меня на панели меню спрятаны все кнопки, которые не требуют нажатия? |
Dumby > 21-10-2014 22:47:59 |
voqabuhe пишет
Да-да, на панели меню (#toolbar-menubar) им самое место. |
voqabuhe > 21-10-2014 23:09:05 |
Dumby пишет
Значит у меня им что-то мешает, хотя остальные, кроме этих двух, там работают. Ну что ж, пусть тогда пока остаются в #PanelUI-button, где они себя прекрасно чувствуют. |
Raf-9600 > 20-02-2017 23:31:14 |
А таймер к тому коду, что в шапке, прикрутить возможно? Допустим, чтобы стирание происходило спустя минуту. |
Alex_one > 08-04-2017 18:14:04 |
Если выбран поисковик по умолчанию, то всё чистит, а если нет то не чистит. 52.0.2 gif (123 яндекс по умолчанию / 12345 google) |
_zt > 09-04-2017 18:01:43 |
Присоединяюсь к просьбе Alex_one. |
Dumby > 09-04-2017 20:37:41 |
gif'ка, конечно, хороша. Но объясняет задачу не полностью. скрытый текст Выделить код Код:((bar, key) => { if (!bar) return; var value = bar[key], box = bar.textbox, set = (o, k = "value", v = "") => o[k] = v; var hasListener, clear = () => setTimeout(() => set(box), 50, hasListener = box.popup.removeEventListener("popuphidden", clear, false)); Object.defineProperty(bar, key, { configurable: true, enumerable: true, get: () => value, set(val) { val === null && !hasListener && setTimeout(() => { if (box.popup.state != "open") set(box); else hasListener = !box.popup.addEventListener("popuphidden", clear, false); }, 50); return value = val; } }); addDestructor(() => delete bar[key] && set(bar, key, value)); })(BrowserSearch.searchBar, "telemetrySearchDetails"); |
_zt > 10-04-2017 01:20:16 |
Dumby |
Ultima2m > 10-04-2017 04:33:09 |
Есть код который очищает поиск (или адрес) при прокрутке колесом на нем. Это удобнее, имхо. Поищите на форуме. |
bunda1 > 10-04-2017 13:09:42 |
Ultima2m пишет
Выделить код Код:// Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 10.04.2017. .............. (bar=> { if ( !bar ) return; bar.textbox.onwheel =()=> bar.textbox.value = ''; addDestructor(()=> bar.textbox.onwheel = null); })(BrowserSearch.searchBar); |
Dumby > 10-04-2017 13:49:59 |
_zt пишет
скрытый текст Выделить код Код:(bar => { if (!bar) return; var events = ["mouseenter", "focus"], init = e => { for(var type of events) removeEventListener(type, init, false, bar); var key = "telemetrySearchDetails", value = bar[key], hasListener, btn; var box = bar.textbox, set = (o, k = "value", v = "") => o[k] = v; var clear = () => setTimeout(() => set(box), 50, hasListener = box.popup.removeEventListener("popuphidden", clear, false)); Object.defineProperty(bar, key, { configurable: true, enumerable: true, get: () => value, set(val) { val === null && !hasListener && setTimeout(() => { if (box.popup.state != "open") set(box); else hasListener = !box.popup.addEventListener("popuphidden", clear, false); }, 50); return value = val; } }); addDestructor(() => delete bar[key] && set(bar, key, value)); if (!(btn = document.getAnonymousElementByAttribute(bar, "anonid", "search-go-button"))) return; var hm = e => e.ctrlKey || e.shiftKey || e.altKey || e.metaKey; addEventListener("click", e => !Services.prefs.getBoolPref("browser.search.openintab") || e.button || hm(e) || e.originalTarget != btn || e.stopPropagation(btn.dispatchEvent(new MouseEvent("click", {ctrlKey: true, metaKey: true}))) , true, btn.parentNode); addEventListener("contextmenu", e => hm(e) || e.preventDefault(set(box)), false, btn); } for(var type of events) addEventListener(type, init, false, bar); })(BrowserSearch.searchBar); |
Alex_one > 10-04-2017 14:22:25 |
Dumby, Dumby пишет
я старался) Второй Ваш Код отлично справляется! |
_zt > 12-04-2017 05:13:55 |
Ultima2m Dumby |
vzli_izv > 05-05-2017 02:17:02 |
есть ещё аддон Clear Search Bar Text On Search |
vitalii201 > 25-08-2018 09:32:45 |
В 61 не работает. Можно исправить? |
Alex_one > 25-08-2018 11:19:00 |
vitalii201 |
Ssswic > 08-04-2019 06:23:35 |
А возможно ли в Mozilla Firefox Quantum 66 очистку поиска такую сделать? custombuttons в Quantum видимо не установится,может есть выход? Спасибо |
User999 > 06-09-2019 17:30:46 |
Bump! Пишу с Quantum 69. Проблема отсутствия автоочищения всё ещё актуальна. |
Alex_one > 09-01-2020 17:09:58 |
Странное вот дело. Автоматически очистить панель поиска после запуска поиска Выделить код Код:(bar => { if (!bar) return; var events = ["mouseenter", "focus"], init = e => { for(var type of events) removeEventListener(type, init, false, bar); var key = "telemetrySearchDetails", value = bar[key], hasListener, btn; var box = bar.textbox, set = (o, k = "value", v = "") => o[k] = v; var clear = () => setTimeout(() => set(box), 50, hasListener = box.popup.removeEventListener("popuphidden", clear, false)); Object.defineProperty(bar, key, { configurable: true, enumerable: true, get: () => value, set(val) { val === null && !hasListener && setTimeout(() => { if (box.popup.state != "open") set(box); else hasListener = !box.popup.addEventListener("popuphidden", clear, false); }, 50); return value = val; } }); addDestructor(() => delete bar[key] && set(bar, key, value)); if (!(btn = document.getAnonymousElementByAttribute(bar, "anonid", "search-go-button"))) return; var hm = e => e.ctrlKey || e.shiftKey || e.altKey || e.metaKey; addEventListener("click", e => !Services.prefs.getBoolPref("browser.search.openintab") || e.button || hm(e) || e.originalTarget != btn || e.stopPropagation(btn.dispatchEvent(new MouseEvent("click", {ctrlKey: true, metaKey: true}))) , true, btn.parentNode); addEventListener("contextmenu", e => hm(e) || e.preventDefault(set(box)), false, btn); } for(var type of events) addEventListener(type, init, false, bar); })(BrowserSearch.searchBar); Очистить панель поиска прокруткой колёсиком мыши на панели поиска Выделить код Код:(bar=> { if ( !bar ) return; bar.textbox.onwheel =()=> bar.textbox.value = ''; addDestructor(()=> bar.textbox.onwheel = null); })(BrowserSearch.searchBar); |
xrun1 > 11-01-2020 15:39:59 |
Alex_one |
Alex_one > 11-01-2020 22:19:35 |
xrun1 |
Erik010 > 01-05-2021 23:01:14 |
До 89 работала кнопка автоматической очистки панели поиска скрытый текст ((bar, key) => { if (!bar) return; var value = bar[key], box = bar.textbox, set = (o, k = "value", v = "") => o[k] = v; var hasListener, clear = () => setTimeout(() => set(box), 50, hasListener = box.popup.removeEventListener("popuphidden", clear, false)); Object.defineProperty(bar, key, { configurable: true, enumerable: true, get: () => value, set(val) { val === null && !hasListener && setTimeout(() => { if (box.popup.state != "open") set(box); else hasListener = !box.popup.addEventListener("popuphidden", clear, false); }, 50); return value = val; } }); addDestructor(() => delete bar[key] && set(bar, key, value)); })(BrowserSearch.searchBar, "telemetrySearchDetails"); |