bunda1
панель вверху окрывается с этим кодом в firefox 28,можно оставить чтобы внизу открывалась?
const forceFind = false, forceFindCS = true; if (gBrowser.currentURI.spec == "about:customizing") return; // Приклеить элемент findbar к странице( #appcontent ) ................................ const fbID = "FindToolbar-m"; delete window.gFindBar; window.gFindBar = document.getElementById(fbID); if (!gFindBar) { //gFindBar = gBrowser.parentNode.insertBefore(document.createElement("findbar"), gBrowser); gFindBar = gBrowser.parentNode.appendChild( document.createElement("findbar") ); gFindBar.id = fbID; gFindBar.setAttribute("browserid", "content"); gFindBar.clientTop; delete window.gFindBarInitialized; window.gFindBarInitialized = true; gFindBar._selectionMaxLen = 1000; // лимит символов для поиска } addEventListener("keypress", gFindBar ); // добавить поиск по мере набора текста // Ctrl+F, показать - скрыть панель поиска .................................... function toggleFindbar() gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close(); addEventListener("keydown", function(e) e.keyCode == e.DOM_VK_F && e.ctrlKey && !e.altKey && !e.shiftKey && !e.preventDefault() && toggleFindbar() , false); this.onclick = function(e) { if (!e.button) toggleFindbar() }; // Показать количество совпадений на панели поиска ................................ const textbox = gFindBar.getElement("findbar-textbox"), nrm = Ci.nsISelectionController.SELECTION_NORMAL, labID = "hits-m"; var lab = document.getElementById(labID); if (!lab) { lab = textbox.parentNode.insertBefore(document.createElement("label"), textbox); lab.id = labID; } var curHit, allHits; function updateHits(arg) { if (gFindBar.hidden) return; var word = textbox.value; if (!word) { lab.value = "0/0"; textbox.removeAttribute("status"); return; } var win = arg instanceof Window && arg || content; if (win == content) curHit = allHits = 0; var findbarFinder = gFindBar._browser.finder; var controller = findbarFinder._getSelectionController(win); var doc = win.document; if (word && controller && doc && doc.documentElement) { var body = doc instanceof HTMLDocument && doc.body ? doc.body : doc.documentElement; var searchRange = doc.createRange(); searchRange.selectNodeContents(body); var startPt = searchRange.cloneRange(); startPt.collapse(true); var endPt = searchRange.cloneRange(); endPt.collapse(false); var retRange = null; var finder = Cc["@mozilla.org/embedcomp/rangefind;1"].createInstance().QueryInterface(Ci.nsIFind); finder.caseSensitive = gFindBar._shouldBeCaseSensitive(word); while ((retRange = finder.Find(word, searchRange, startPt, endPt))) { allHits++; if (!curHit) { var sel = controller.getSelection(nrm), range; if (sel.toString()) range = sel.getRangeAt(0); else { var editableNode = findbarFinder._getEditableNode(retRange.startContainer); if (editableNode) sel = editableNode.editor.selectionController.getSelection(nrm); if (sel.toString()) range = sel.getRangeAt(0); } var comp = range && ["startContainer", "endContainer", "startOffset", "endOffset"] .every(function(prop) range[prop] == retRange[prop]); if (comp) curHit = allHits; } startPt = retRange.cloneRange(); startPt.collapse(false); } Array.forEach(win.frames, function(frame) updateHits(frame)); } if (win != content) return; allHits ? textbox.removeAttribute("status") : textbox.setAttribute("status", "notfound"); forceFind && !curHit && allHits && gFindBar._find(); lab.value = curHit + "/" + allHits; } updateHits(); gFindBar.updateHits = updateHits; function insUpd(methodName, code) { const method = gFindBar[methodName]; gFindBar[methodName] = Function("arguments.callee.method.apply(this, arguments);" + (code || "") + " this.updateHits();"); gFindBar[methodName].method = method; addDestructor(function() gFindBar[methodName] = method); } insUpd("_find"); insUpd("_findAgain"); insUpd("_setCaseSensitivity", forceFindCS && " this._find();"); const progressListener = { onStateChange: function(wpr, req, state) state & Ci.nsIWebProgressListener.STATE_STOP && setTimeout(updateHits, 320), onLocationChange: function(wpr, req) !req && updateHits() }; addDestructor(function() gBrowser.removeProgressListener(progressListener)); function onFindbar() { gBrowser[(gFindBar.hidden ? "remove" : "add") + "ProgressListener"](progressListener); !gFindBar.hidden && updateHits(); } onFindbar(); const observer = MutationObserver(onFindbar); observer.observe(gFindBar, { attributes: true, attributesFilter: ["hidden"] }); addDestructor(function() observer.disconnect());
Отсутствует
bunda1 спасибо!!
У меня ещё один вопрос. В стандартной панели поиска работали жесты FireGestures - копировать, вставить, удалить.
А в этой панельке не работают. Отчего это?
Можно как-то подружить FireGestures с этой панелькой?
Отсутствует
bunda1 спасибо!!
У меня ещё один вопрос. В стандартной панели поиска работали жесты FireGestures - копировать, вставить, удалить.
А в этой панельке не работают. Отчего это?
Можно как-то подружить FireGestures с этой панелькой?
Проблема в том что при жесте мышью панель поиска теряет фокус и я не знаю как это быстро исправить
Отсутствует
bunda1 спасибо!!
У меня ещё один вопрос. В стандартной панели поиска работали жесты FireGestures - копировать, вставить, удалить.
А в этой панельке не работают. Отчего это?
Можно как-то подружить FireGestures с этой панелькой?
Ну тогда создай новые жесты для FireGestures с кодами:
// удалить goDoCommand("cmd_delete"); try { gFindBar._findField.value = '' } catch(e) {};
// вставить goDoCommand("cmd_paste"); try { gFindBar._findField.value = gClipboard.read() } catch(e) {};
// копировать goDoCommand("cmd_copy"); try { gClipboard.write( gFindBar._findField.value ) } catch(e) {};
Отредактировано bunda1 (14-05-2014 23:06:45)
Отсутствует
Приветствую. Есть такая идея - по нажатию кнопки определенная ссылка в коде страницы изменяется, сменяя в итоге отображаемую на странице картинку на другую. Делал так в игровом клиенте когда-то, тот просто lua понимал - в фоксе это как-то возможно?
Отсутствует
Ну тогда создай новые жесты для FireGestures с кодами:
Нет, это совсем не то!
Мне не надо копировать/удалять/заменять содержимое FindBar-а целиком, а только выделение.
Плохо то, что на самом FindBar-е FireGestures не работает, а если делать жест на странице, то выделение сразу же сбрасывается.
Отсутствует
.
Помогите допилить кнопку Фиксированая страница
Есть инициализация кнопки, отключается скрол, но страница уходит влево и вверх от текущих координат.
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0424%u0438%u043A%u0441%u0438%u0440%u043E%u0432%u0430%u043D%u043D%u0430%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbpJREFUeNqcU81Kw0AQns3uJjYlpVUPhYK+gVCsh76HF+899VJ6UMQHEPFSeigFX8CL79GTD6GngkJb+pP/jTPbJsaiSLvwZRMy3zcz3+wyAHhCnMN+61Xg46Lb7Z5JKY1dmGEYql6vZ5CAEccxYdfslFAL8MVisWcHwP8UiKIIXNcD3w9AqQQYYyCECVJaYFkW7jwTEKvVKiPGsQLP8/XOuUQSEYhoagEhZAbiagHf9zVZKS0KpmlvglOi3IgRBBgGx4qMb4EkSTCAMtkZYS0gNJHzlMS2O9UCppTFxHEOWVrimsSRRFnYr+5FUZgQl/56GGgVi0UolUpQqVSgXC7r90KhoEWCIIDlcgnT6RQmkwnMZjOYz+dosO+zRqNxPRgMHimQsuaxrgCAWlRoEJ0Vmk4rbsFQDaHdbt+wer1+hQEn2yV2Op2H/He/37/djkFP3snAZ8qQLsqEWe4cx/kRjNVyNPU+rSpzcTweAyFddEjQB6tWq4Ft23oSrutS7xb1n46cVrVazSymaRwhjhEHaOhls9k8zWcajUZvaOQLvgaID8QnDYPlLoa9gfjn/NOtWyLo+KovAQYAowmjJubOgoMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.checked%20%3D%20%21this.checked%3B%0A%0Aif%20%28%20this.%20checked%20%29%20%0A%20%20%20%20%20this.image%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbdJREFUeNqcUsFKAlEUve/Nc0ZHFKUWglR/EEi28D8iaBm4cuOqiD4gop0LCdq0DKL/cNVHVBuhQMXMxubNdO7TZ6MUoQ/OzHsz955z77lPENENsEfrrUeFx/7x/cuu8ny5SmYYfES3h1uSCaQmR+ogWFHcYUFD4IzH4zU7IOdPAq01BahqMpmQjqJZtCLluuQCqVRqTqCCRPkRgj9x1mFIwnFMkut5pJDAcPgNAjUlUIYgjuOpMVD9QqLE51QmM09aSLZ7kzojMMrsCH742ezviQjlt4OqWEAKMSdwY9JxOl8UtjQbbJVMEiDkz6TD8TuX7TLNp5TSy0I5n89TsVikQqFg9hm0gX/GyNFoRP1+n3q9Hg0GAxoOh2xyIKrV6km73b7iQFZKQs4U2SM2lycTwqO6rtN1dE2NRuNUVCqVIwRsL4+x2WxeJs+tVutsOUYI8cwTuLNTsGOEynkul1sIRrWwQ11IuXjjVbfbJYZdHmYOH7xyuUy+7xtD+aKhd4/7T96ZUqlEwhIBG8AmkIahB7VabSep1Ol0nmDkA7YT4BV442FYAq7Ln0H9c/81MAI+uONvAQYA1/Sld40oN/MAAAAASUVORK5CYII%3D%22%3B%0Aelse%20%0A%20%20%20%20%20this.image%20%3D%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbpJREFUeNqcU81Kw0AQns3uJjYlpVUPhYK+gVCsh76HF+899VJ6UMQHEPFSeigFX8CL79GTD6GngkJb+pP/jTPbJsaiSLvwZRMy3zcz3+wyAHhCnMN+61Xg46Lb7Z5JKY1dmGEYql6vZ5CAEccxYdfslFAL8MVisWcHwP8UiKIIXNcD3w9AqQQYYyCECVJaYFkW7jwTEKvVKiPGsQLP8/XOuUQSEYhoagEhZAbiagHf9zVZKS0KpmlvglOi3IgRBBgGx4qMb4EkSTCAMtkZYS0gNJHzlMS2O9UCppTFxHEOWVrimsSRRFnYr+5FUZgQl/56GGgVi0UolUpQqVSgXC7r90KhoEWCIIDlcgnT6RQmkwnMZjOYz+dosO+zRqNxPRgMHimQsuaxrgCAWlRoEJ0Vmk4rbsFQDaHdbt+wer1+hQEn2yV2Op2H/He/37/djkFP3snAZ8qQLsqEWe4cx/kRjNVyNPU+rSpzcTweAyFddEjQB6tWq4Ft23oSrutS7xb1n46cVrVazSymaRwhjhEHaOhls9k8zWcajUZvaOQLvgaID8QnDYPlLoa9gfjn/NOtWyLo+KovAQYAowmjJubOgoMAAAAASUVORK5CYII%3D%22%3B%0A%0A%0Avar%20css%20%3D%20%27%5C%0A@-moz-document%20url-prefix%28%22http%22%29%2C%20url-prefix%28%22https%22%29%2C%20url-prefix%28%22ftp%22%29%2C%20url-prefix%28%22file%22%29%20%7B%5C%0Abody%20%7B%5C%0Aposition%3A%20fixed%20%21important%3B%5C%0A%7D%5C%0A%7D%27%3B%0A%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%20%20%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%0A%0Aif%20%28%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%20%29%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0Aelse%20%0A%20%20%20%20sss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
С этим кодом (более удачное решение)фиксируются вертикальные координаты, но по горизонтали станица тоже уходит влево.
var bd=window.content.document.getElementsByTagName("body")[0]; var ctab=getBrowser (). selectedTab; var url=content.document.location; var css; function remstyle(){ var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); var cssURI = makeURI("data:text/css," + encodeURIComponent(css)); if ( sss.sheetRegistered(cssURI, sss.AGENT_SHEET) ) sss.unregisterSheet(cssURI, sss.AGENT_SHEET); //сбросить стиль }; if (ctab.hasAttribute('scrollfix')){ // page already fixed - delete css ctab.removeAttribute('scrollfix'); var style = window.getComputedStyle(bd, null); var sYp = style.top; css = '@-moz-document url('+url+'){body{' css=css+'top: '+sYp+' !important;position: fixed !important;}}'; setTimeout(remstyle, 300);//fix because window.getComputedStyle is slow, if need increase timeout }else{ //page not fixed - add css ctab.setAttribute('scrollfix','fixed'); var sYp=content.scrollY; var css = '@-moz-document url('+url+'){body{' css=css+'top: -'+sYp+'px !important;position: fixed !important;}}'; var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); var cssURI = makeURI("data:text/css," + encodeURIComponent(css)); sss.loadAndRegisterSheet(cssURI, sss.AGENT_SHEET);//установить стиль }
Отсутствует
Вопрос: в 29 кнопки, помещённые в меню (вверху справа), должны инициализироваться при запуске браузера?
Или они инициализируются только если это меню открыть?
Отсутствует
Ferguss114
Инициализируются только после первого открытия, так сделано это меню – пока оно закрыто, кнопок в нем нет, они в gNavToolbox.palette.
И да, это же легко проверяется.
Добавлено 16-05-2014 23:51:24
в gNavToolbox.palette
Проверить можно, например, так:
Отредактировано Infocatcher (16-05-2014 23:51:24)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
А где же теперь размещать кнопки, если я хочу, чтобы они работали сразу после запуска браузера?
Выходит кроме панели меню негде?
Отсутствует
Как-то по моей просьбе делали кнопку для поиска скрипта на сайте userscripts.org
url=getBrowser().currentURI.spec; domen = url.split(/\/+/g)[1]; getBrowser (). selectedTab = getBrowser (). addTab ("https://userscripts.org/scripts/search?q=" + domen +"&submit=Search");
А как-бы его переделать для поиска на http://bugmenot.com/?
Отсутствует
Отсутствует
После обновления до 29 версии в консоли постоянно появляется ошибка
A promise chain failed to handle a rejection. Full Message: Full Stack: JS frame :: resource://gre/components/nsLivemarkService.js :: LS_getLivemark/< :: line 405 native frame :: <unknown filename> :: <TOP_LEVEL> :: line 0
Ругается на эту строчку deferred.reject(Components.Exception("", Cr.NS_ERROR_INVALID_ARG));
Что это и откуда взялось?
Отсутствует
Вопрос к Infocatcher т.к. кнопка его или кто знает или делал аналогичное
Кнопка bookmarksFolder.js и я добавил такой код
this. onmouseover = function (event) { this. open = true; }; this. onmouseout = function (event) { this. open = false; //setTimeout(function() {this. open = false;},1250); };
Тайм-аут конечно не то... нужно просто временное отключение на этапе редактирования.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Как бы сделать так, что-бы по ПКМ на пункте из списка не было автоскрытия...
Вот пример: code_snippets/autoOpenCloseMenu.js
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Почему с этим кодом получается непонятное
sel = gURLBar.value.substring(gURLBar.selectionStart, gURLBar.selectionEnd); alert(sel)
Я выделяю часть текста в адресной строке, кликаю по странице, чтоб сбросить выделение и потом запускаю этот код.
Алерт показывает, что было выделено раньше, хотя сейчас выделения в адресной строке нет
Отсутствует
хотя сейчас выделения в адресной строке нет
Есть, но на адресной строке это не проверить из-за того, что при получении фокуса выделяется весь текст.
А вот тут в поле для ответа – можно. Если уйти Tab'ом, то выделение визуально пропадает, но если вернуться через Shift+Tab – восстанавливается.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Есть, но на адресной строке это не проверить из-за того, что при получении фокуса выделяется весь текст.
А вот тут в поле для ответа – можно. Если уйти Tab'ом, то выделение визуально пропадает, но если вернуться через Shift+Tab – восстанавливается.
А как сделать, чтобы выполнялось нужное мне действие, только если визуально что-то выделено?
Отсутствует
toxa
Можно проверять/использовать document.commandDispatcher.focusedElement.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
rbfyec пишетПомогите, пожалуйста, приделать счётчик количества совпадений к панели поиска. К стандартной панели, не кнопке.
Выделить кодКод:
const forceFind = false, forceFindCS = true; // Приклеить элемент findbar к странице( #appcontent ) ................................ const fbID = "FindToolbar-m"; delete window.gFindBar; window.gFindBar = document.getElementById(fbID); if (!gFindBar) { gFindBar = gBrowser.parentNode.insertBefore(document.createElement("findbar"), gBrowser); gFindBar.id = fbID; gFindBar.setAttribute("browserid", "content"); gFindBar.clientTop; delete window.gFindBarInitialized; window.gFindBarInitialized = true; gFindBar._selectionMaxLen = 1000; // лимит символов для поиска } // Ctrl+F, показать - скрыть панель поиска .................................... function toggleFindbar() gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close(); addEventListener("keydown", function(e) e.keyCode == e.DOM_VK_F && e.ctrlKey && !e.altKey && !e.shiftKey && !e.preventDefault() && toggleFindbar() , false); this.onclick = function(e) { if (!e.button) toggleFindbar() }; // Показать количество совпадений на панели поиска ................................ const textbox = gFindBar.getElement("findbar-textbox"), nrm = Ci.nsISelectionController.SELECTION_NORMAL, labID = "hits-m"; var lab = document.getElementById(labID); if (!lab) { lab = textbox.parentNode.insertBefore(document.createElement("label"), textbox); lab.id = labID; } var curHit, allHits; function updateHits(arg) { if (gFindBar.hidden) return; var word = textbox.value; if (!word) { lab.value = "0/0"; textbox.removeAttribute("status"); return; } var win = arg instanceof Window && arg || content; if (win == content) curHit = allHits = 0; var findbarFinder = gFindBar._browser.finder; var controller = findbarFinder._getSelectionController(win); var doc = win.document; if (word && controller && doc && doc.documentElement) { var body = doc instanceof HTMLDocument && doc.body ? doc.body : doc.documentElement; var searchRange = doc.createRange(); searchRange.selectNodeContents(body); var startPt = searchRange.cloneRange(); startPt.collapse(true); var endPt = searchRange.cloneRange(); endPt.collapse(false); var retRange = null; var finder = Cc["@mozilla.org/embedcomp/rangefind;1"].createInstance().QueryInterface(Ci.nsIFind); finder.caseSensitive = gFindBar._shouldBeCaseSensitive(word); while ((retRange = finder.Find(word, searchRange, startPt, endPt))) { allHits++; if (!curHit) { var sel = controller.getSelection(nrm), range; if (sel.toString()) range = sel.getRangeAt(0); else { var editableNode = findbarFinder._getEditableNode(retRange.startContainer); if (editableNode) sel = editableNode.editor.selectionController.getSelection(nrm); if (sel.toString()) range = sel.getRangeAt(0); } var comp = range && ["startContainer", "endContainer", "startOffset", "endOffset"] .every(function(prop) range[prop] == retRange[prop]); if (comp) curHit = allHits; } startPt = retRange.cloneRange(); startPt.collapse(false); } Array.forEach(win.frames, function(frame) updateHits(frame)); } if (win != content) return; allHits ? textbox.removeAttribute("status") : textbox.setAttribute("status", "notfound"); forceFind && !curHit && allHits && gFindBar._find(); lab.value = curHit + "/" + allHits; } updateHits(); gFindBar.updateHits = updateHits; function insUpd(methodName, code) { const method = gFindBar[methodName]; gFindBar[methodName] = Function("arguments.callee.method.apply(this, arguments);" + (code || "") + " this.updateHits();"); gFindBar[methodName].method = method; addDestructor(function() gFindBar[methodName] = method); } insUpd("_find"); insUpd("_findAgain"); insUpd("_setCaseSensitivity", forceFindCS && " this._find();"); const progressListener = { onStateChange: function(wpr, req, state) state & Ci.nsIWebProgressListener.STATE_STOP && setTimeout(updateHits, 320), onLocationChange: function(wpr, req) !req && updateHits() }; addDestructor(function() gBrowser.removeProgressListener(progressListener)); function onFindbar() { gBrowser[(gFindBar.hidden ? "remove" : "add") + "ProgressListener"](progressListener); !gFindBar.hidden && updateHits(); } onFindbar(); const observer = MutationObserver(onFindbar); observer.observe(gFindBar, { attributes: true, attributesFilter: ["hidden"] }); addDestructor(function() observer.disconnect());
Я попробовал использовать весь код, но без этого куска:
// Приклеить элемент findbar к странице( #appcontent ) ................................ const fbID = "FindToolbar-m"; delete window.gFindBar; window.gFindBar = document.getElementById(fbID); if (!gFindBar) { gFindBar = gBrowser.parentNode.insertBefore(document.createElement("findbar"), gBrowser); gFindBar.id = fbID; gFindBar.setAttribute("browserid", "content"); gFindBar.clientTop; delete window.gFindBarInitialized; window.gFindBarInitialized = true; gFindBar._selectionMaxLen = 1000; // лимит символов для поиска }
Тогда используется "родная" панель поиска и мышиные жесты в ней работают.
Вроде хорошо, но счётчик совпадений появляется только на первой вкладке. Как бы это пофиксить, оставивши "родную" панель поиска?
Отсутствует
Тогда используется "родная" панель поиска и мышиные жесты в ней работают.
Вроде хорошо, но счётчик совпадений появляется только на первой вкладке. Как бы это пофиксить, оставивши "родную" панель поиска?
Не знаю, наверно я такое не сделаю
Отсутствует