1. gClipboard.write(losslessDecodeURI(gBrowser.currentURI));
2. for(let tab of gBrowser.visibleTabs.filter(t => !t.selected))
try {gBrowser.getBrowserForTab(tab).reload();} catch(ex) {}
3. gCustomizeMode.enter();
Гигантское СПАСИБО. Можно ещё вопросы позадавать в этом направлении?)
Отредактировано Артик (06-09-2018 16:04:19)
Отсутствует
Dumby
Не получается, или это или просто ноль ....
addEventListener("popupshowing", { handleEvent(e) { if (e.target.id != "placesContext" || this.shouldHide(e.target)) return; var add, menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Восстановить иконки всех закладок"); menuitem.setAttribute("oncommand", "handleCommand();"); menuitem.handleCommand = this.cmd.bind(this); (add = e => e.target.querySelector( "#placesContext_sortBy\\:name" ).before(menuitem))(e, menuitem); addDestructor(() => menuitem.remove()); this.handleEvent = e => { if (e.target.id != "placesContext") return; var hide = this.shouldHide(e.target); if (e.target.contains(menuitem) ^ hide) return; hide ? menuitem.remove() : add(e, menuitem); } }, shouldHide(popup) { var tn = popup.triggerNode; if (!tn || tn.id == "PlacesChevron") return true; var node = tn.nodeName == "treechildren" ? tn.parentNode.selectedNode : tn._placesNode || tn._placesView.result.root; var trg = node && (node.type == node.RESULT_TYPE_FOLDER || node.type == node.RESULT_TYPE_FOLDER_SHORTCUT) if (trg) this.guid = PlacesUtils.getConcreteItemGuid(node); return !trg; }, async cmd() { var res = await PlacesUtils.promiseBookmarksTree(this.guid); if (!("children" in res)) return; var set = new Set(); for(var child of res.children) if ( child.typeCode == PlacesUtils.bookmarks.TYPE_BOOKMARK && child.uri.startsWith("http") ) try {set.add("http://" + new URL(child.uri).hostname);} catch(ex) {} set.size && this.start([...set]); }, start(urls) { alert(urls.join("\n")); } }, true); // Получить адрес иконки закладки и запустить установку иконки .... function getSiteFavicon(siteURI) { var hostURI = "http://" + siteURI.split(/\/+/g)[1] + "/"; var faviconURI = hostURI + "favicon.ico"; // адрес иконки, если не получить адрес иконки из сайта if ( getSiteFavicon[siteURI] ) return; // стоп если закладка с таким адресом уже была getSiteFavicon[siteURI] = true; // получить адрес иконки из документа сайта закладки var xhr = new XMLHttpRequest(); xhr.open("GET", siteURI, true); xhr.responseType = "document"; xhr.onload = xhr.onerror = function() { var doc = xhr.responseXML; if ( doc !== null ) { var links = doc.getElementsByTagName("link"); [...links].forEach(function(link) { if ( /(?:^|\s)icon(?:\s|$)/.test(link.rel.toLowerCase()) ) faviconURI = link.href }); } setBookFavicon(faviconURI, siteURI); // запустить установку иконки } xhr.send(); };
Отредактировано drage2 (06-09-2018 18:54:43)
Отсутствует
Отсутствует
drage2
Твик я брал не у тебя, ты просто под руку попался на предыдущей страничке. Брал отсюда №12781, автор func4ptch4.
Dumby там же через твой пост и ответил. Я хочу уточнить у него про config.js. Если есть, что сказать - скажи, а наезжать не надо.
Отредактировано xrun1 (06-09-2018 23:34:30)
Отсутствует
Поставил CB на Waterfox, и получилась вот такая фигня (внизу экрана): https://www.radikal.kz/Vzh.jpg
Расширение не работает, кнопки отказываются сохраняться. Как это лечится?
Отсутствует
xrun1
Понятно....Только все-равно, я первооткрыватель, скрипты конфига не нужны теперь.Кстати, надписи в about:addons -убрал?
Вместо этих скриптов лучше это поставить:
all-settings.js - в Pref
pref("general.config.obscure_value", 0); pref("general.config.filename", "mozilla.cfg");
//....Заблоктрованые настройки...// lockPref("general.useragent.override.youtube.com", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0 PaleMoon/27.4.2"); lockPref("browser.download.panel.shown", false); lockPref("dom.push.enabled", false); lockPref("dom.webnotifications.enabled", false); lockPref("reader.parse-on-load.enabled", false); lockPref("security.insecure_field_warning.contextual.enabled", false); lockPref("security.insecure_password.ui.enabled", false); lockPref("signon.autofillForms.http", true); lockPref("toolkit.telemetry.enabled", false); lockPref("app.update.service.enabled", false); lockPref("browser.pagethumbnails.enabled", false); lockPref("plugin.load_flash_only", false); lockPref("network.predictor.cleaned-up", true); lockPref("browser.tabs.remote.autostart", false); lockPref("browser.tabs.loadInBackground", false);
Отсутствует
drage2
Спасибо.
Отсутствует
xrun1
No women no cry, нет СВ нет браузера!
Автоматически открывать папки закладок при наведении мышки на папку на панели закладок.
Вещь не слабая в 60 работает....browserPlacesViews.js - в 61-62 не хило попилили...Это к спецам надо.
Отредактировано drage2 (07-09-2018 11:42:26)
Отсутствует
Позволю себе повторить свой вопрос:
Поставил CB на Waterfox, и получилась вот такая фигня (внизу экрана): https://www.radikal.kz/Vzh.jpg
Расширение не работает, кнопки отказываются сохраняться. Как это лечится?
Отсутствует
Твой config.js надо добавлять в этом случае по принципу "кашу маслом не испортишь"
Нет, если подходит сам принцип правки omni.ja, то следует
отдать предпочтение ему и мой config.js не использовать.
Просто потому, что в коде могут быть косяки (и уже бывали).
Осталась пара хотелок
Там странное «Можно ли сделать с помощью css следующие 2 вещи».
Можно вот ровно на столько, насколько и vertical_top_bottom_bar.
Но получится ли ...
@-moz-document url(chrome://browser/content/browser.xul) { #PlacesToolbarDropIndicator { --code:(bar => { var listener = { id: undefined, handleEvent(e) {this[e.type](e);}, events: ["mouseover", "popuphidden"], get chevron() { delete this.chevron; return this.chevron = document.getElementById("PlacesChevron"); }, listen(ind) { bar.addEventListener(this.events[ind], this); bar.removeEventListener(this.events[+!ind], this); }, mouseover(e) { if (!e.target.matches("[container]:not([open])")) return; var button = e.target; if (this.id) this.id = clearTimeout(this.id); this.id = setTimeout(btn => { this.id = undefined; if (!btn.matches(":hover:not([open])")) return; if (this.chevron.open) this.chevron.open = false; this.listen(1); btn.open = true; }, 500, button); }, popuphidden(e) { if (e.target.parentNode.parentNode != bar) return; var btn = bar.querySelector("[container]:not([open]):hover"); if (!btn || btn.contains(e.target)) this.listen(0); } }; listener.listen(0); this.destructor = () => listener.events.forEach( type => bar.removeEventListener(type, listener) ); })(parentNode.nextSibling); -moz-binding: url('data:text/xml,\ <bindings xmlns="http://www.mozilla.org/xbl"><binding id="autobfolders"><implementation>\%0A\ <constructor>eval(getComputedStyle(this).getPropertyValue("--code"));</constructor>\%0A\ <destructor>destructor();</destructor>\%0A\ </implementation></binding></bindings>' ) !important; } #searchbar image.search-go-button { -moz-binding: url('data:text/xml,\ <bindings xmlns="http://www.mozilla.org/xbl"><binding id="sbwclear"><implementation>\%0A\ <constructor>\%0A\ var bar = this.bar = closest("searchbar");\%0A\ this.handleEvent = () => {\%0A\ if (bar.value) bar.value = "", bar.dispatchEvent(new InputEvent("input"));\%0A\ }\%0A\ bar.addEventListener("wheel", this);\%0A\ </constructor>\%0A\ <destructor>this.bar.removeEventListener("wheel", this);</destructor>\%0A\ </implementation></binding></bindings>' ) !important; } }
Позволю себе повторить свой вопрос
Из вопросного там только хороший скриншот проблемы.
Номера версий и ссылки, видимо, сожрал барсук.
Я проверил на портабельном WF 56.2.2 c этого сайта,
и, например, последняя оверлейная версия CB 0.0.5.8.9.6 отсюда
выглядит вполне рабочей.
А лечится, ну это смотря насколько запущено.
Как минимум: удалить CB, закрыть WF, удалить из профиля папку custombuttons, запустить WF, установить CB.
Может ещё папку startupCache удалть. Так же возможны непонятки из-за xulstore.json и browser.uiCustomization.state
тогда дополнительный рестарт или правка.
Вообще, ещё у Sonny есть форк CB специально под Waterfox,
но там надо недостающие <!ENTITY> в ru editor.dtd добавлять, так что ...
Отсутствует
xrun1
Есть одно замечание если через omni.ja, то на тестовом профиле не подхватывает правку. (это код батника)
\\start firefox -no-remote -p "имя профиля" \\start .\Firefox\Firefox.exe -profile .\p1 start .\Firefox\Firefox.exe -no-remote -profile .\p1
Если config.js то подхватывает, там и там.
Так что мне удобнее пока через config.js.
И да авторство не мое omni.ja... автор не захотел в свое время делиться я через других выпросил можно сказать.
Добавлено 08-09-2018 22:38:54
Dumby
Пашет, проверил, вот еще вариант сырой) ну так как я не программист...
CustomButtons
/*Initialization Code*/ // ==UserScript== // @name AutoPopup.uc.js // @description Auto popup menulist/menupopup/Panelpopup // @compatibility Firefox 2.0+ // @author GOLF-AT // @version 2.0.0.20131119 (function(){ var PopElt=null;var DropElt=null; var PopTimer=null;var HideTimer=null; var AlwaysPop=false;var nDelay=600; function IsNewMenuBtn(elt){try{return elt.id=='PanelUI-menu-button';}catch(e){return false;}} function AutoPopup() { PopTimer = null; if (DropElt) { if (DropElt.localName=='dropmarker' || IsNewMenuBtn(DropElt)) PopElt = DropElt; else { var v = null; try { v = DropElt.ownerDocument. getAnonymousNodes(DropElt); }catch(ex) {} if (v!=null && v.length!=0 && v[0]. localName=='menupopup') PopElt = v[0]; else PopElt=DropElt.childNodes[0]; } if (IsNewMenuBtn(PopElt)){PanelUI.show();return;} try{PopElt.openPopup(PopElt.parentNode,'after_start'); }catch(e){PopElt=null;} } } function HidePopup() { try { if (PopElt.localName=='dropmarker') PopElt.parentNode.closePopup(); else if (IsNewMenuBtn(PopElt)) PanelUI.hide(); else PopElt.hidePopup(); }catch(e) {} HideTimer = null; DropElt = null; PopElt = null; } function MouseOver(e) { if (!AlwaysPop && !document.hasFocus()) return; if (e.target.getAttribute('cb-name') == "Proxy") return; if (e.target.getAttribute('cb-name') == "Merge Custom Button") return; if (e.target.getAttribute('cb-name') == "Session Bookmarks") return; if (IsButton(e.target)) { type = e.target.getAttribute('type'); if (type == 'menu-button') { if (e.originalTarget!=e.target) return; } /*else { if (type != 'menu') return; }*/ } if (HideTimer) { window.clearTimeout(HideTimer); HideTimer = null; } try { if ('PopupAutoComplete'==e.target.id. substr(0,17)) return; for(var elt=e.target; elt!=null; elt= elt.parentNode) { if (elt.localName=='popup' || elt. localName=='menupopup') return; } }catch(ex) {} if (IsNewMenuBtn(PopElt)) { if (e.target != PopElt) HidePopup(); } else if (PopElt != null) { if (DropElt!=null && e.target==DropElt) return; try { if (PopElt.localName != 'dropmarker' ) { for(var elt=e.target; elt!=null; elt=elt.parentNode) { if (elt == PopElt) return; } } }catch(ex) {} HidePopup(); } DropElt = e.target; PopTimer = setTimeout(AutoPopup, nDelay); } function MouseOut(e) { if (PopTimer) { window.clearTimeout(PopTimer); PopTimer = null; } if (!HideTimer && PopElt && !IsNewMenuBtn(e. target)) HideTimer = window.setTimeout(HidePopup, 500); } function IsButton(elt) { try { return elt.localName=='toolbarbutton' || elt .localName=='button'; }catch(e) { return false; } } function IsMenuButton(elt) { if (IsNewMenuBtn(elt)) return true; if (!IsButton(elt)) return false; for(var i=0; i<2; i++) { try { var nodes = i==0x01 ? elt.childNodes : elt. ownerDocument.getAnonymousNodes(elt); if (nodes!=null && nodes.length && nodes[0] .localName=='menupopup') return true; }catch(e) {} } return false; } function EnumElement(elt) { try { if (elt.localName == 'prefpane') { elt.addEventListener('paneload', function(e) { setTimeout(function() { EnumElement(e. target); }, 100); }, false); } else if(elt.id=='sidebar' && !elt.hasAttribute( 'AutoPopup')) { elt.setAttribute('AutoPopup', true) elt.addEventListener('SidebarFocused', function(e) { EnumElement(elt); }, false); } else if(elt.id == 'editBookmarkPanel') return; }catch(e) {} for(var i=0; i<2; i++) { var nodes = null; try { if (elt.localName == 'browser') { i = 1; nodes = elt.contentDocument.childNodes; } else nodes = i==0x01 ? elt.childNodes : elt. ownerDocument.getAnonymousNodes(elt); }catch(e) { nodes = null; } if (nodes == null) continue; for(var n=0; n<nodes.length; n++) { try { var node = nodes[n]; if ('PopupAutoComplete'==node.getAttribute( 'id').substr(0,17) || 'menupopup'==node .localName || node.localName=='popup') ; else if (node.localName != 'dropmarker') { if (node.localName=='menu' && 'menubar' ==node.parentNode.localName) ; else if(!IsMenuButton(node)) node = null; } else if(node.getAttribute('type')=='menu') { node = node.parentNode; if (!node.firstChild || node.firstChild. localName!='menupopup') continue; } if (node == null) { EnumElement(nodes[n]); continue; } if (node.hasAttribute('command')) continue; addEventListener('mouseout', MouseOut, false, node); addEventListener('mouseover',MouseOver, false, node); }catch(e) {} } } } setTimeout(function() { EnumElement(document); }, 1200); })();
//Автоматически открывать папки закладок на панели закладок, от 22.08.2016. ............... addEventListener('mouseover', (e, targ = e.target)=> {if ( targ.getAttribute('type') != 'menu' || (document.querySelectorAll('[open^="true"]').length > 0 && !document.getElementById('PlacesChevron').hasAttribute('open')) ) return;document.getElementById('PlacesChevronPopup').hidePopup(); setTimeout(()=> {if ( !targ.f ) try { targ.children[0].openPopup //showPopup (targ, -1, -1, 'popup', 'bottomleft', 'topleft') } catch(e) {};}, 500, targ.f = false); targ.onmouseleave =()=> { targ.f = true; targ.onmouseleave = null };}, false, document.getElementById('PlacesToolbar'));
Отредактировано func4ptch4 (09-09-2018 21:06:55)
Отсутствует
Но получится ли ...
Всё получилось в лучшем виде! Спасибо!
func4ptch4
".\p1 - кавычки не хватает. У меня все тестовые профили срабатывают, правда батник конвертнут в exe.
Отсутствует
Подскажите, как назначить свой клик на PanelUI-button, с другими кнопками это прокатывает, а с этой выполняется мой код, плюс открывается меню PanelUI…
нужно, чтобы меню PanelUI открывалось правой кнопкой мыши, а на левую назначить своё действие.
// click PanelUI-button - своё действие, клик правой кнопкой - открыть меню PanelUI addEventListener("click", function(event) { if(event.button == 0) { SidebarUI.toggle("viewHistorySidebar") } else if(event.button == 2) // открыть меню PanelUI }, false, document.getElementById("PanelUI-menu-button") );
Отсутствует
если заменить showPopup на openPopup.
В общем очень удобно но работает криво! ну не красиво открывает меню
Заменить-то заменил, но вызываешь openPopup() с аргументами,
которые остались от showPopup, вот и криво.
Теперь замени -1,-1,'popup','bottomleft','topleft' на "after_start"
и смотри, открывает ли красивее.
нужно, чтобы меню PanelUI открывалось правой кнопкой мыши, а на левую назначить своё действие.
Так подойдёт?
(btn => { addEventListener("mousedown", e => e.button || e.stopPropagation() || SidebarUI.toggle("viewHistorySidebar") , true, btn.parentNode); addEventListener("contextmenu", e => e.ctrlKey || e.preventDefault() || PanelUI.show(e) , false, btn); })(document.getElementById("PanelUI-menu-button"));
Отсутствует
Dumby - спасибо, вариант с "mousedown" работает.
у меня PanelUI-menu на месте кнопки закрытия окна, вне фокуса иконка "крестик", при наведении на кнопке родная иконка меню.
Это для неопытных юзеров, по левому клику можно закрыть браузер, продвинутые почитают подсказку и для показа меню сделают правый клик.
Поставил CB на Waterfox, и получилась вот такая фигня (внизу экрана): https://www.radikal.kz/Vzh.jpg
Расширение не работает, кнопки отказываются сохраняться. Как это лечится?
Советую перейти на Basilisk, он быстрей и корректней WaterFox будет https://rubrowsers.ru/news/basilisk
Отредактировано Dobrov (09-09-2018 18:44:39)
Отсутствует
Dumby
AutoPopup обновил код выше, можешь проверить? просто боюсь что не так сделал.
Хотя стало красивее!) спасибо.
И надо ли менять код в коде ниже. Вроде он подхватывает везде, и менять как я понял необязательно.
//Автоматически открывать папки закладок на панели закладок, от 22.08.2016. ...............
Отредактировано func4ptch4 (09-09-2018 21:13:26)
Отсутствует
Dumby
Так подойдёт?
скрытый текст
Пойдет,конечно, жаль tooltip - пришлось в русификатор лезть, appmenu.tooltip - в самой кнопке не могу сделать...
Левой я вкладку закрываю
Отсутствует
Доработал кнопку Compact меню - ЛКМ: обычное меню + Журнал, ПКМ: меню PanelUI. Кроме того, код дополняет кнопку PanelUI-button.
Вопрос: сейчас у меня код создания меню сразу после проверки кнопок, а если вывести код создания меню в отдельную функцию, то это не работает.
Сейчас так:
if(event.button == 0) {
// Главное меню
if (event.target && event.target != this) return;
…
Желательно сделать так:
if(event.button == 0) {
CreateMenu; // функция создания меню
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%7C%u0441%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%u0441%20%u0430%u0434%u0440%u0435%u0441%u043E%u043C%3A%0Afunction%20switch_tab_url%28url%29%20%7B%0A%09var%20aURI%20%3D%20url%3B%0A%09var%20tabOK%20%3D%20false%3B%20for%28%20var%20tab%20of%20gBrowser.tabs%29%20%09tab.linkedBrowser.currentURI.spec%20%3D%3D%20aURI%20%26%26%20%28%20tabOK%20%3D%20true%20%29%3B%0A%09if%20%28%20tabOK%20%29%20%7B%09//%20%u0432%u043A%u043B%u0430%u0434%u043A%u0430%20%u043D%u0430%u0439%u0434%u0435%u043D%u0430%2C%20%u0441%u043D%u043E%u0432%u0430%20%u043F%u0435%u0440%u0435%u0431%u043E%u0440%20%u0432%u0441%u0435%u0445%20%u0432%u043A%u043B%u0430%u0434%u043E%u043A%u2026%0A%09%09for%28%20var%20tab%20of%20gBrowser.tabs%29%20%09tab.linkedBrowser.currentURI.spec%20%3D%3D%20aURI%20%26%26%20gBrowser.removeTab%28tab%29%3B%0A%09%7D%20else%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28aURI%29%3B%0A%7D%3B%0A%0A//%20Compact%20Menu%0Avar%20tooltips%20%3D%0A%22%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u0411%u0440%u0430%u0443%u0437%u0435%u0440%u0430%5Cn%22%20+%0A%22%20%20%20%u043A%u043B%u0438%u043A%20+Ctrl%3A%20%u0416%u0443%u0440%u043D%u0430%u043B%5Cn%5Cn%22%20+%0A%22%20%u041F%u0440%u0430%u0432%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%22%20%20%20%u2630%20%u041E%u0441%u043D%u043E%u0432%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%5Cn%5Cn%22%20+%0A%0A%22%20%u0416%u0435%u0441%u0442%u044B%20%u043F%u0440%u0430%u0432%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%22%20%09%u2026%20%u043D%u0430%u0436%u0430%u0442%u044C%2C%20%u0441%u0434%u0435%u043B%u0430%u0442%u044C%20%u0436%u0435%u0441%u0442%2C%20%u043E%u0442%u043F%u0443%u0441%u0442%u0438%u0442%u044C%22%3B%0A%0Aconst%20nameCB%20%3D%20%22%u0416%u0435%u0441%u0442%20%u043C%u044B%u0448%u0438%3A%22%3B%0A%0Avar%20tooltipText%20%3D%0A%22%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u0411%u0440%u0430%u0443%u0437%u0435%u0440%u0430%5Cn%22%20+%0A%22%20%20%20%u043A%u043B%u0438%u043A%20+Ctrl%3A%20%u0416%u0443%u0440%u043D%u0430%u043B%5Cn%22%20+%0A%22%20%u041F%u0440%u0430%u0432%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%22%20%20%20%u2630%20%u041E%u0441%u043D%u043E%u0432%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%5Cn%22%20+%0A%22%20%u041A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%3A%20%u0432%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%5Cn%5Cn%22%20+%0A%0A%22%20%u0416%u0435%u0441%u0442%u044B%20%u043F%u0440%u0430%u0432%u043E%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%22%20%09%u2026%20%u043D%u0430%u0436%u0430%u0442%u044C%2C%20%u0441%u0434%u0435%u043B%u0430%u0442%u044C%20%u0436%u0435%u0441%u0442%2C%20%u043E%u0442%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%5Cn%22%20+%0A%22%5Cn%22+%0A%22%20%u2022%20%u041B%u0435%u0432%u043E%3A%20%u043F%u0435%u0440%u0435%u0445%u043E%u0434%20%u041D%u0430%u0437%u0430%u0434%20%28%3D%3E%3A%20%u0412%u043F%u0435%u0440%u0451%u0434%29%5Cn%22%20+%0A%22%20%u2022%20R+%u21C5%20%u0420%u043E%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%3A%20%u041C%u0430%u0441%u0448%u0442%u0430%u0431%20%28+-%29%5Cn%22%20+%0A%22%20%u2022%20M+%u21C5%20%u0420%u043E%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%3A%20%u0412%u043A%u043B%u0430%u0434%u043A%u0438%20%u21C4%5Cn%22%20+%0A%22%20%u2022%20L%3ER%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0443%20%28U%3A%20%u0421%u0442%u043E%u043F%29%5Cn%22%20+%0A%22%20%u2022%20UDU%20%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%5Cn%22%20+%0A%22%20%u2022%20DR%3A%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u043A%u044D%u0448%5Cn%22%20+%0A%22%5Cn%22%20+%0A%0A%22%20%u041F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u043E%u0431%u044A%u0435%u043A%u0442%u043E%u0432%20%u043C%u044B%u0448%u044C%u044E%3A%5Cn%22%20+%0A%22%20%09%u2026%20%u0432%u0437%u044F%u0442%u044C%20%u0438%20%u0442%u0430%u0449%u0438%u0442%u044C%20%28%u0442%u0435%u043A%u0441%u0442%2C%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0443%29%22%20+%0A%22%5Cn%22%3B%0A%0Avar%20tooltipSimple%20%3D%0A%22%20%u041C%u0435%u043D%u044E%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20Firefox%5Cn%22%20+%0A%22%5Cn%22+%0A%22%20%u0427%u0442%u043E%u0431%u044B%20%u0438%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u041C%u0430%u0441%u0448%u0442%u0430%u0431%2C%20%u0432%u0440%u0430%u0449%u0430%u0439%u0442%u0435%5Cn%22%20+%0A%22%20%u043A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%20%u043C%u044B%u0448%u0438%2C%20%u0437%u0430%u0436%u0430%u0432%20%u043F%u0440%u0430%u0432%u0443%u044E%20%u043A%u043D%u043E%u043F%u043A%u0443%5Cn%22%20+%0A%22%5Cn%22%20+%0A%22%20%u0416%u0435%u0441%u0442%u044B%20%u043C%u044B%u0448%u0438%3A%20%u043F%u0435%u0440%u0435%u0442%u0430%u0449%u0438%u0442%u044C%20%u0438%20%u0431%u0440%u043E%u0441%u0438%u0442%u044C%5Cn%22%20+%0A%22%20%u2026%u0442%u0435%u043A%u0441%u0442%2C%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0438%20%28L%20%u043B%u0435%u0432%u043E%2C%20U%20%u0432%u0432%u0435%u0440%u0445%u2026%29%22%20+%0A%22%5Cn%22%3B%0A%0A//%20%u0440%u0435%u0436%u0438%u043C%20%u0440%u0430%u0431%u043E%u0442%u044B%20%u043A%u043D%u043E%u043F%u043A%u0438%20-%20%u041F%u0440%u043E%u0441%u0442%u043E%u0439%20%u0438%u043B%u0438%20%u042D%u043A%u0441%u043F%u0435%u0440%u0442%0Aconst%20SIMPLE%20%3D%20false%3B%0A%0Aif%20%28%20SIMPLE%20%29%0A%09tooltipText%20%3D%20tooltipSimple%3B%0A%0Avar%20tooltipEnd%20%3D%20%22%22%3B%0A//%20%27L%3CR%27%3A%7Bname%3A%27%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043C%u0430%u0441%u0448%u0442%u0430%u0431%27%2Ccmd%3Afunction%28%29%7B%20FullZoom.reset%28%29%20%7D%7D%2C%0A//%20%27DR%27%3A%7Bname%3A%27%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%27%2Ccmd%3Afunction%28%29%7B%20gBrowser.reload%28%29%20%7D%7D%2C%0A//%20%20%22%u041F%u0435%u0440%u0435%u0442%u0430%u0441%u043A%u0438%u0432%u0430%u043D%u0438%u0435%20%u043C%u044B%u0448%u044C%u044E%20%28U%20-%20%u0442%u0430%u0449%u0438%u0442%u044C%20%u0432%u0432%u0435%u0440%u0445...%29%22%20+%20arr.join%28%22%5Cn%22%29%3B%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%0Athis.onmouseover%20%3D%28%29%3D%3E%20%7B%20this.tooltipText%20%3D%20tooltipText%20%7D%3B%0A%0Aif%20%28gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%29%20return%3B%0A%0Avar%20mmb%20%3D%20document.getElementById%28%22main-menubar%22%29%3B%0Ammb.collapsed%20%3D%20true%3B%0AaddDestructor%28%28%29%20%3D%3E%20mmb.collapsed%20%3D%20false%29%3B%0A%0A//%20%u0418%u043A%u043E%u043D%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%0A//%20this.setAttribute%28%22image%22%2C%20%22chrome%3A//branding/content/icon32.png%22%29%3B%0A%0Athis.onclick%20%3D%20function%28event%29%20%7B%0A%09if%28event.button%20%3D%3D%200%29%20%7B%20//%20%u041B%u041A%u041C%0A%0A%09%09if%28event.altKey%29%20%09//%20+Alt%0A%09%09%090%0A%09%09else%20if%28event.shiftKey%29%20//%20+Shift%0A%09%09%090%0A%09%09else%20if%28event.ctrlKey%29%20//%20+Ctrl%0A%09%09%09SidebarUI.toggle%28%22viewHistorySidebar%22%29%0A%09%09else%20%7B%20//%20%u043A%u043B%u0438%u043A%0A%09%09//%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%0A%09%09if%20%28event.target%20%26%26%20event.target%20%21%3D%20this%29%20return%3B%0A%09%09if%20%28%21event.target%20%26%26%20this.lastChild%20%26%26%20this.lastChild.state%20%3D%3D%20%22open%22%29%20%7B%0A%09%09%09this.lastChild.hidePopup%28%29%3B%20return%3B%0A%09%09%7D%0A%09%09var%20ids%20%3D%20%5B%0A%09%09%09%22history-menu%22%2C%0A%09%09%09%22bookmarksMenu%22%2C%0A%09%09%09%22file-menu%22%2C%0A%09%09%09%22edit-menu%22%2C%0A%09%09%09%22view-menu%22%2C%0A%09%09%09%22tools-menu%22%2C%0A%09%09%09%22helpMenu%22%0A%09%09%5D%3B%0A%09%09var%20menus%20%3D%20ids.map%28id%20%3D%3E%20document.getElementById%28id%29%29.filter%28id%3D%3E%20%7Breturn%20%28id%20%21%3D%3D%20null%29%7D%29%3B%0A%09%09var%20menubar%20%3D%20menus%5B0%5D.parentNode%3B%0A%09%09var%20order%20%3D%20Array.slice%28menubar.childNodes%29%3B%0A%0A%09%09function%20appendMenus%28parent%29%20%7B%0A%09%09%09var%20nodes%20%3D%20parent%20%3D%3D%20menubar%20%3F%20order%20%3A%20menus%3B%0A%09%09%09for%28var%20node%20of%20nodes%29%20parent.appendChild%28node%29%3B%0A%09%09%09if%20%28ids.indexOf%28%22bookmarksMenu%22%29%20%3D%3D%20-1%29%20return%3B%0A%09%09//%20%09for%28var%20menu%20of%20parent.getElementsByTagName%28%22menu%22%29%29%20%7B%0A%09%09//%20%09%09if%20%28%21menu._placesView%29%20continue%3B%0A%09%09//%20%09%09menu._placesView.uninit%28%29%3B%0A%09%09//%20%09%09delete%20menu._placesView%3B%0A%09%09//%20%09%7D%0A%09%09%7D%0A%09%09this.textContent%20%3D%20%22%22%3B%0A%09%09var%20popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%09%09popup.position%20%3D%20%22after_start%22%3B%0A%09%09popup.id%20%3D%20%22cb-compact-menu-menupopup%22%3B%0A%09%09popup.setAttribute%28%22context%22%2C%20%22toolbar-context-menu%22%29%3B%0A%09%09//%20popup.style.cssText%20%3D%20%22font-size%3A%20larger%3B%20%22%3B%0A%09%09popup.__defineGetter__%28%22parentNode%22%2C%20%28%29%20%3D%3E%20null%29%3B%0A%0A%09%09popup.addEventListener%28%22popuphidden%22%2C%20function%20onPH%28e%29%20%7B%0A%09%09%09if%20%28e.originalTarget%20%21%3D%20this%29%20return%3B%0A%09%09%09popup.removeEventListener%28%22popuphidden%22%2C%20onPH%2C%20false%29%3B%0A%09%09%09appendMenus%28menubar%29%3B%0A%09%09%7D%2C%20false%29%3B%0A%0A%09%09appendMenus%28popup%29%3B%0A%09%09popup.openPopup%28this%29%3B%0A%09%09%7D%0A//%20%u0421%u041A%u041C%20%u043A%u043B%u0438%u043A%0A%09%7D%20else%20if%28event.button%20%3D%3D%201%29%0A//%20%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0437%u0430%u043A%u0440%u044B%u0442%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%0A%20%09%09document.getElementById%28%27History%3AUndoCloseTab%27%29.doCommand%28%29%0A%7D%3B%0A%0A//%20%u041F%u041A%u041C-%u043A%u043B%u0438%u043A%2C%20+%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%0AaddEventListener%28%22contextmenu%22%2C%20event%20%3D%3E%20%7B%0A%09if%28%20%21event.metaKey%20%26%26%20%21event.altKey%20%29%20%7B%0A%09%09this.tooltipText%20%3D%20%27%27%3B%0A%09%09PanelUI.show%28event%29%3B%0A%09%09event.preventDefault%28%29%3B%0A%09%7D%0A%7D%2C%20false%2C%20this%29%3B%0A%0A%0A//%20%u0437%u0430%u0433%u0440%u0443%u0437%u0438%u0442%u044C%20css-%u0441%u0442%u0438%u043B%u044C%20%u0438%u0437%20%u0421%u043F%u0440%u0430%u0432%u043A%u0438%20%u043A%u043D%u043E%u043F%u043A%u0438%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%20self.Help%20%29%29%3B%0Avar%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%0Asss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0AaddDestructor%28%28%29%3D%3E%20sss.unregisterSheet%28uri%2C%200%29%29%3B%0A%0Avar%20PanelUIHint%20%3D%0A%09%22%20%u2716%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0411%u0440%u0430%u0443%u0437%u0435%u0440%5Cn%22%20+%0A%09%22%20%u043F%u0440%u0430%u0432%u0430%u044F%20%u043A%u043D%u043E%u043F%u043A%u0430%20%u043C%u044B%u0448%u0438%3A%5Cn%22%20+%0A%09%22%20%20%20%u2630%20%u041E%u0441%u043D%u043E%u0432%u043D%u043E%u0435%20%u041C%u0435%u043D%u044E%5Cn%22%20+%0A%09%22%20%20%20%u043A%u043B%u0438%u043A%20+Ctrl%3A%20%u0416%u0443%u0440%u043D%u0430%u043B%5Cn%22%20+%0A%09%22%20%u043A%u043E%u043B%u0451%u0441%u0438%u043A%u043E%3A%20%uD83D%uDDD5%20%u0421%u0432%u0435%u0440%u043D%u0443%u0442%u044C%22%3B%0A%0Avar%20element%20%3D%20document.getElementById%28%22PanelUI-menu-button%22%29%3B%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%0Aelement.onmouseover%20%3D%28%29%3D%3E%20%7B%20element.tooltipText%20%3D%20PanelUIHint%20%7D%3B%0A%0A//%20%u0434%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u043A%u043B%u0438%u043A%u0438%3A%0AaddEventListener%28%22mousedown%22%2C%20event%20%3D%3E%20%7B%0A%09if%28event.button%20%3D%3D%200%29%20%7B%20//%20%u041B%u041A%u041C%0A%09%09if%28event.altKey%29%20%09//%20+Alt%0A%09%09%090%0A%09%09else%20if%28event.shiftKey%29%20//%20+Shift%0A%09%09%090%0A%09%09else%20if%28event.ctrlKey%29%20//%20+Ctrl%0A%09%09%09SidebarUI.toggle%28%22viewHistorySidebar%22%29%0A%09%09else%20//%20%u043A%u043B%u0438%u043A%0A%09%09%09close%28%29%0A%09%7D%20else%20if%28event.button%20%3D%3D%201%20%26%26%20%21event.altKey%20%26%26%20%21event.shiftKey%20%26%26%20%21event.ctrlKey%29%20%7B%0A%09%09window.minimize%28%29%20//%20%u0421%u041A%u041C%0A%09%7D%0A%09event.stopPropagation%28%29%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0441%20%u043B%u044E%u0431%u044B%u043C%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u043C%0A%7D%2C%20true%2C%20element.parentNode%29%3B%0A%0AaddEventListener%28%22contextmenu%22%2C%20event%20%3D%3E%20%7B%0A%09if%28%20%21event.altKey%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.shiftKey%20%29%20%7B%0A%09%09element.tooltipText%20%3D%20%27%27%3B%0A%09%09PanelUI.show%28event%29%3B%0A%09%7D%0A%09event.preventDefault%28%29%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0441%20%u043B%u044E%u0431%u044B%u043C%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u043C%0A%7D%2C%20false%2C%20element%29%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%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/*AGENT_SHEET*/%0A%0A/*%20%u043A%u043D%u043E%u043F%u043A%u0430%3A%20%u0413%u043B%u0430%u0432%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20*/%0A%23PanelUI-menu-button%3Anot%28%3Ahover%29%20.toolbarbutton-icon%20%7B%20/*%20Close%20Button%20*/%0A%09list-style-image%3A%20url%28%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBIWXMA%20AA7EAAAOxAGVKw4bAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAKJQTFRF%20AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%20AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%20AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoBElOgAAADZ0%20Uk5TAAEEBQYKCw0TFBYXISQuMDIzNEBBREZLWFlnaGl3eXx+f4uMjZCRnJ2foKipq6yztbm6u76/%20C39FMwAAALlJREFUOI3VkkcSwjAMRRXTIfRO6L2XxO/+V2PBDGBD4i1opT9PY6t8kT8K1TV1V5na%20G9F7130mnlFQBd1+ybaGqvlEAFHjWR7CwOrBG8O1/Mj9C0w9q0DUHM4lEZHCEVapzzkyG9jnRLJb%202OU+uUj+AOu0WsKp+I0//p7N4OJ/5yKVG0BUi+MiLQ26Fc+lqUF34nklBIjqcdzVZP6YPKZrUWqR%20vGrnsYb2uQOTOw1jW65nW85p2t+OO5s+HGmx0zpjAAAAAElFTkSuQmCC%27%29%20%21important%3B%0A%09-moz-image-region%3A%20auto%20%21important%3B%20%7D%0A%23PanelUI-menu-button%3Anot%28%3Ahover%29%20.toolbarbutton-icon%20%7B%20background-color%3A%20%23f8cccd%20%21important%3B%20%7D%20/*%20%u0444%u043E%u043D%20%u0438%u043A%u043E%u043D%u043A%u0438%20*/%0A%23PanelUI-button%20.toolbarbutton-icon%20%7B%20min-width%3A%2026px%20%21important%3B%20%7D%0A%23PanelUI-menu-button%3Ahover%7B%20cursor%3A%20pointer%3B%20%21important%3B%20%7D%0A%23PanelUI-button%20%7B%0A%09margin-top%3A%200px%20%21important%3B%20margin-left%3A%200px%20%21important%3B%20margin-right%3A%20-5px%20%21important%3B%0A%09right%3A%200px%3B%20/*%20Move%20it%20to%20right%20side%20%28adjust%20for%20caption%20buttons%29%20*/%0A%09border-left%3A%20none%20%21important%3B%20/*%20Remove%20menu%20border%20*/%0A%7D%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
PanelUI-button - своё действие
Левый клик- about:addons
(btn => { addEventListener("mousedown", e => e.button || e.stopPropagation() || BrowserOpenAddonsMgr() , true, btn.parentNode); addEventListener("contextmenu", e => e.ctrlKey || e.preventDefault() || PanelUI.show(e) , false, btn); })(document.getElementById("PanelUI-menu-button")); // Подсказка кнопки// var PanelUIHint = "Л: About:Addons\nП: Oткрыть Meню"; var element = document.getElementById("PanelUI-menu-button"); element.onmouseover =()=> { element.tooltipText = PanelUIHint };
Отредактировано drage2 (10-09-2018 13:45:41)
Отсутствует
AutoPopup обновил код выше, можешь проверить? просто боюсь что не так сделал.
При замене синтаксис не пострадал.
И надо ли менять код в коде ниже. Вроде он подхватывает везде, и менять как я понял необязательно.
Кто «он»? Код ниже? Он и сам необязателен.
AutoPopup раскрывает в том числе и папки закладок на панели закладок.
И безотносительно: документация говорит, что метод openPopup
принимает в качестве второго аргумента строку, указывающюю позицию,
или объект, в котором, соответствующим образом именованые свойства,
могут выступать вторым и последующими аргументами.
Но если ты хочешь, чтобы вместо этого у тебя там торчала минус единица, то пожалуйста.
Ошибка не образуется, и это Custom всё ещё Buttons.
tooltip - пришлось в русификатор лезть, appmenu.tooltip - в самой кнопке не могу сделать...
Не понял. Что случилось?
document.getElementById("PanelUI-menu-button").setAttribute( "tooltiptext", "Хоть горшком назови,\nтолько в печку не ставь." );
если вывести код создания меню в отдельную функцию, то это не работает
Ну, например, определи эту функцию как Arrow function.
У них нет своего this, и на верхнем уровне this будет ссылаться на кнопку.
var CreateMenu = event => {
// Главное меню
…
}
Отсутствует
Dumby
Почему эта зараза дополняет закладку по умолчанию в "другие закладки"?
// Дополнительные возможности в строке адреса ............... addEventListener("click", e=> { e.preventDefault(); e.stopPropagation(); if ( e.button == 0 ) PlacesCommandHook.bookmarkPage(gBrowser.selectedBrowser, true); document.getElementById("identity-box").style.background = "blue"; setTimeout(()=> document.getElementById("identity-box").style.background = "", 300); if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { // ПКМ e.preventDefault(); BrowserPageInfo(content.document, (gURLBar.value.startsWith("http") ? "generalTab" : "generalTab")); oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() }; } }, true, document.getElementById("identity-icon") ); var PanelUIHint = "Л: Добавить закладку\nП: O Странице"; var element = document.getElementById("identity-icon"); // Подсказка кнопки element.onmouseover =()=> { element.tooltipText = PanelUIHint };
Отсутствует
drage2
Что значит почему? Так сделано.
А почему у них так сделано, это ты у них спроси.
async bookmarkPage(aBrowser, aShowEditUI, aUrl = null, aTitle = null) {
// If aUrl is provided, we want to bookmark that url rather than the
// the current page
let isCurrentBrowser = !aUrl;
let url = aUrl ? new URL(aUrl) : new URL(aBrowser.currentURI.spec);
let info = await PlacesUtils.bookmarks.fetch({ url });
let isNewBookmark = !info;
if (!info) {
let parentGuid = PlacesUtils.bookmarks.unfiledGuid;
...
Отсутствует
Dumby
Это понятно, есть другая,там подрихтовано и этот косяк исправлен, хотел и эту подрихтовать да не выходит
// Дополнительные возможности для значка идентификации сайта в строке адреса ..... (identBox => { var tip = "Л: Добавить закладку\nП: О странице"; var icon = gIdentityHandler._identityIcon; addEventListener("mouseenter", () => icon.setAttribute("tooltiptext", tip), false, icon || 1); addDestructor(() => icon.setAttribute("tooltiptext", gNavigatorBundle.getString("identity.icon.tooltip")) ); var listener = { handleEvent(e) { e.ctrlKey || e.shiftKey || e.detail > 1 || this[e.type](e); }, click(e) { if (e.button || !identBox.contains(e.target)) return; e.stopPropagation(); this.bookmarkCurrentPage(gBrowser.selectedBrowser, true); identBox.setAttribute("style", "background:red;"); setTimeout(() => identBox.removeAttribute("style"), 300); }, contextmenu(e) { e.preventDefault(); var url = gBrowser.currentURI.spec; BrowserPageInfo(url, url.startsWith("http") ? "generalTab" : "generalTab"); }, get bookmarkCurrentPage() { delete this.bookmarkCurrentPage; return this.bookmarkCurrentPage = eval(`(${ PlacesCommandHook.bookmarkPage.toSource() .replace("async", "$& function") .replace("unfiledGuid", "menuGuid") })`).bind(PlacesCommandHook); } }; addEventListener("click", listener, true, identBox.parentNode); addEventListener("contextmenu", listener, false, identBox); })(document.getElementById("identity-box") || 1);
Отсутствует