Автоматически очистить панель поиска после запуска поиска( Firefox17+ )
Автор: bunda1
Версия: от 08.09.2014.
Описание: Kод очищает поисковую строку Firefox после подачи поиска.
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую Custom Buttons кнопку, можно использовать уже существующую.
// Автоматически очистить панель поиска после запуска поиска, от 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) );
Отредактировано bunda1 (08-09-2014 22:48:37)
Отсутствует
А можно что бы происходил сброс на поисковую систему по умолчанию после подачи поиска?
// Автоматически очистить панель поиска после запуска поиска + возврат нужного поисковика, от 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 ); })();
Отредактировано bunda1 (19-12-2013 23:17:30)
Отсутствует
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 ); })();
Спасибо
На форуме
А к новой редакции функцию возврата поисковика прикрутите пожалуйста.
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) );
Отсутствует
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 ); })();
Отсутствует
Но мне кажется очистить панель поиска прокруткой колёсиком мыши на панели поиска будет лучше:
А можно вариант, чтобы очищала и возвращала поисковик, но не колёсиком, а например ЛКМ+ПКМ, как в кнопке Toggle Find+, или любым другим сочетанием?
Отредактировано voqabuhe (21-10-2014 13:01:05)
Отсутствует
А можно вариант, чтобы очищала и возвращала поисковик, но не колёсиком, а например ЛКМ+ПКМ, как в кнопке Toggle Find+, или любым другим сочетанием?
// ЛКМ + ПКМ на панели поиска очищают его, от 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
Если имеется в виду клик ПКМ при зажатой ЛКМ
(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"));
Отредактировано Dumby (21-10-2014 19:41:06)
Отсутствует
Если имеется в виду клик ПКМ при зажатой ЛКМ
Да, именно это и имелось ввиду, и прекрасно работает. Спасибо. Есть только одно маленькое но. Если поместить на панель главного меню, что эту кнопку, что "Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 19.09.2014.", они там работают только до первой перезагрузки . А после их можно оживить только редактированием. Можно это поправить, а то у меня на панели меню спрятаны все кнопки, которые не требуют нажатия?
Отредактировано voqabuhe (21-10-2014 22:21:01)
Отсутствует
на панели меню спрятаны все кнопки, которые не требуют нажатия
Да-да, на панели меню (#toolbar-menubar) им самое место.
Сейчас поместил кнопку на этот тулбар, сделал рестарт, и ... — код работает .
Правда Nightly несвежая, но всё-таки 36.0a1.
Отсутствует
Сейчас поместил кнопку на этот тулбар, сделал рестарт, и ... — код работает .
Значит у меня им что-то мешает, хотя остальные, кроме этих двух, там работают. Ну что ж, пусть тогда пока остаются в #PanelUI-button, где они себя прекрасно чувствуют.
Отсутствует
А таймер к тому коду, что в шапке, прикрутить возможно? Допустим, чтобы стирание происходило спустя минуту.
Иногда мне кажется, что лучшие программисты мира и лучшие технические умы работают только над одним - как сделать так, чтоб на новом скоростном железе тормозило также, как на хламе 10 летней давности.
(с)
Отсутствует
Если выбран поисковик по умолчанию, то всё чистит, а если нет то не чистит.
Можно сделать чтоб тоже чистило?
52.0.2
Отсутствует
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");
Отредактировано Dumby (09-04-2017 23:08:27)
Отсутствует
Dumby
Да, очищает при выборе поисковика, но...
Открывает в текущей вкладке при клике по стрелке, а должна в новой (активной), так же как при выборе поиска или по Еnter.
Можно еще прикрутить очистку строки поиска при клике ПКМ по стрелке (сейчас вызов меню панелей)?
Отредактировано _zt (10-04-2017 01:23:23)
Отсутствует