>Форум 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=60057 |
bunda1 > 21-08-2013 19:51:45 |
Показывать количество открытых табов в адресной строке ( Firefox 24+) Скриншот: Использование: создайте новую Custom Buttons кнопку и положите код в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую. Выделить код Код:// Показывать количество открытых табов в адресной строке, от 10.05.2019. .................. (()=> { // Создать в адресной строке счётчик вкладок .... var tabCounter = document.createElement("toolbarbutton"); tabCounter.setAttribute("id", "tabCounter"); tabCounter.setAttribute("context", "event.stopPropagation()"); tabCounter.setAttribute("tooltiptext", "Показать меню всех вкладок"); var urlbarIcons = document.getElementById("page-action-buttons"); urlbarIcons.insertBefore(tabCounter, urlbarIcons.firstChild); addDestructor(()=> tabCounter.remove() ); // Отслеживать клик на счетчике .... tabCounter.onclick =e=> { if ( e.target.localName == "menuitem" ) return; tabCounter.textContent = ""; // удалить старое меню // создать новое меню всех вкладок текущей группы var array = ["label", "image", "selected", "unread", "pending"]; var menu = tabCounter.appendChild(document.createElement("menupopup")); gBrowser.visibleTabs.forEach(tab=> { var mItem = menu.appendChild(document.createElement("menuitem")); mItem.tab = tab; mItem.setAttribute("class", "menuitem-iconic bookmark-item"); array.forEach(atrr=> mItem.setAttribute(atrr, tab.getAttribute(atrr)) ); }); // периодически запускать обновление меню menu.interval = setInterval(()=> menuReload(), 200); addEventListener("popuphidden", ()=> clearInterval(menu.interval), false, menu); // обновить меню function menuReload() { [...menu.children].forEach(el=> { array.forEach(atrr=> el.setAttribute(atrr, el.tab.getAttribute(atrr)) ); }) }; // автоматически закрывать меню при ухода курсора, длительность увода - 450 мс menu.onmouseover =()=> this.f = true; menu.onmouseleave =()=> { this.f = false; setTimeout(()=> !this.f && menu.hidePopup(), 450) }; // отслеживать клики на пунктах меню menu.onmouseup =e=> { e.preventDefault(); var mItem = e.target, tab = mItem.tab; if ( e.button == 0 ) gBrowser.selectedTab = tab; else { mItem.remove(); gBrowser.removeTab(tab); } menuReload(); }; // фокус на активную вкладку в меню при открытии var box = document.getAnonymousElementByAttribute(menu, "class", "popup-internal-box"); addEventListener("popupshowing", ()=> { var menuitem = [...menu.children].filter(el=> el.getAttribute("selected", "true") )[0]; menuitem.setAttribute('_moz-menuactive', true); var menuitemCenter = menuitem.boxObject.screenY + menuitem.boxObject.height/2; var boxCenter = box.boxObject.screenY + box.boxObject.height/2; box.scrollByPixels(menuitemCenter - boxCenter); }, false, menu); menu.openPopup(tabCounter, "after_start") }; // Css стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ /* Стиль для кнопки */\ #tabCounter:hover { color: #FF1493 !important; }\ /* Стиль добавляет текст на кнопку */\ #tabCounter .toolbarbutton-icon { display: none !important; }\ #tabCounter .toolbarbutton-text { display: -moz-box !important; }\ #tabCounter { -moz-box-orient: horizontal !important; }\ /* Стиль для меню вкладок */\ #tabCounter > menupopup scrollbox { overflow-y: auto !important; }\ #tabCounter > menupopup > menuitem[unread="true"],\ #tabCounter > menupopup > menuitem[pending="true"] { color: blue !important; }\ #tabCounter { -moz-appearance: none !important; border: 0 !important; margin-right: -8px !important; }\ #tabCounter > menupopup > menuitem[selected="true"] { color: red !important; font-weight: bold !important; }\ ')); var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, 0); addDestructor(()=> sss.unregisterSheet(uri, 0) ); // Считать и показывать количество вкладок .... function count() { try { window.clearTimeout(count.timeout) } catch(e) {}; count.timeout = window.setTimeout(()=> { var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; tabCounter.label = (all > visible ? visible + '/' : '') + all; }, 350); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs); addEventListener("TabClose", count, false, tabs); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(()=> getChangeTabGroup(), 50); removeEventListener(e.type, c, false, tabs); }, false, tabs); }; getChangeTabGroup(); })(); |
>ORG@niZM< > 23-08-2013 00:01:55 |
bunda1, спасибо. Можно ли: |
bunda1 > 23-08-2013 08:47:17 |
>ORG@niZM< пишет
Хорошо, я сделаю. |
>ORG@niZM< > 23-08-2013 09:44:32 |
bunda1 |
bunda1 > 25-08-2013 01:34:38 |
>ORG@niZM< пишет
Выделить код Код:// Показывать количество открытых табов в адресной строке +, от 25.08.2013. (function () { // Создать в адресной строке счётчик вкладок .... var tabCounter = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore( tabCounter, urlbarIcons.firstChild ); addDestructor(function() { urlbarIcons.removeChild( tabCounter ) }); tabCounter.id = "tabCounter"; // Отслеживать клик на счетчике .... tabCounter.onclick = function(e) { if ( e.button ) return; tabCounter.textContent = ""; var menu = tabCounter.appendChild( document.createElement("menupopup") ); // создать и открыть новое меню menu.setAttribute("onmouseup", "gBrowser.selectedTab = gBrowser.visibleTabs[event.target.index]"); menu.setAttribute("onmouseleave", "this.hidePopup()"); gBrowser.visibleTabs.forEach(function( tab, i ) { var mItem = document.createElement("menuitem"); mItem.index = i; mItem.setAttribute("label", tab.label ); mItem.setAttribute("image", tab.image ); mItem.setAttribute("class", "menuitem-iconic bookmark-item"); mItem.setAttribute("selected", tab.selected ); mItem.setAttribute("unread", tab.hasAttribute("unread")); menu.appendChild( mItem ); }); menu.showPopup( tabCounter, -1, -1, "popup", "bottomleft", "topleft"); }; // Стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #tabCounter { -moz-appearance: none !important; border: 0px !important; margin-right: -5px !important; }\ #urlbar-icons > statusbarpanel:first-child scrollbox { overflow-y: auto !important; }\ .menuitem-iconic.bookmark-item[unread="true"]:not(:hover) { color: blue !important; }\ .menuitem-iconic.bookmark-item[selected="true"]:not(:hover) { color: red !important; }\ ')); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); addDestructor(function() { sss.unregisterSheet(uri, sss.AGENT_SHEET) }); // Считать и показывать количество вкладок .... function count() { setTimeout(function() { var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; tabCounter.label = ( all > visible ? gBrowser.visibleTabs.length + '/' : '' ) + all; }, 50 ); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs ); addEventListener("TabClose", count, false, tabs ); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(function() { getChangeTabGroup() }, 50 ) removeEventListener( e.type, c, false, tabs ); }, false, tabs ); }; getChangeTabGroup(); })(); |
Inko7 > 25-08-2013 11:15:02 |
bunda1 |
bunda1 > 25-08-2013 12:02:22 |
Inko7 пишет
А вот и не удобно и не практично, на панели вкладок должны быть только вкладки. |
Inko7 > 25-08-2013 12:13:20 |
bunda1 пишет
ага, вкладки и индикатор их количества |
voqabuhe > 25-08-2013 12:17:15 |
bunda1 пишет
+1 этот блок Выделить код Код:// Отслеживать клик на счетчике .... tabCounter.onclick = function(e) { alert(self._handlers.length); if ( e.button !== 0 ) return; var menu = tabCounter.appendChild( document.createElement("menupopup") ); // создать и открыть новое меню Array.slice( gBrowser.visibleTabs ).forEach(function( tab, i ) { var mItem = document.createElement("menuitem"); mItem.index = i; mItem.setAttribute("label", tab.label ); mItem.setAttribute("image", tab.image ); mItem.setAttribute("class", "menuitem-iconic bookmark-item"); mItem.setAttribute("selected", tab.selected ); mItem.setAttribute("unread", tab.hasAttribute('unread') ); menu.appendChild( mItem ); }); menu.showPopup( tabCounter, -1, -1, "popup", "bottomleft", "topleft"); addEventListener("mouseup", function(e) gBrowser.selectedTab = gBrowser.visibleTabs[e.target.index], true, menu ); addEventListener("popuphiding", function f(e) { // удалить меню после закрытия tabCounter.removeChild( e.target ) }, false, menu ); }; Ещё что-нибудь можно удалить, если не нужен список открытых вкладок? 25-08-2013 12:19:41 Inko7 пишет
Когда делаешь такие заявления надо добавлять ИМХО. А не делать заявления от всех. ИМХО |
bunda1 > 25-08-2013 12:31:07 |
voqabuhe |
Inko7 > 25-08-2013 12:40:14 |
Ну всё, всё, затоптали bunda1
и все споры утихнут навсегда |
bunda1 > 25-08-2013 12:56:48 |
Ок |
>ORG@niZM< > 26-08-2013 07:50:03 |
№5 >ORG@niZM< пишет
В любом случае спасибо - TU мне больше не нужен. |
Inko7 > 31-08-2013 16:58:51 |
bunda1
по аналогии, самому получается поместить счетчик на кнопку рядом с дропмаркером, но как прописать его вместо - умений не хватает... |
voqabuhe > 31-08-2013 17:09:57 |
bunda1 |
bunda1 > 01-09-2013 22:06:24 |
Показывать количество открытых табов на кнопке "Список всех вкладок" ( Firefox 17+) Выделить код Код:// Показывать количество открытых табов на кнопке "Список всех вкладок", от 01.09.2013. ................................ (function () { var alltabs = document.getElementById('alltabs-button'); if ( alltabs == null ) return; // Стиль добавляет текст на кнопку .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ %button% .toolbarbutton-icon {\ display: none !important;\ }\ %button% .toolbarbutton-text {\ display: -moz-box !important;\ }\ %button% {\ -moz-box-orient: horizontal !important;\ }\ '.replace(/%button%/g, "#alltabs-button" ) )); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); addDestructor(function() { sss.unregisterSheet(uri, sss.AGENT_SHEET) }); // Фокус на активную вкладку в меню всех вкладок .... (function() { const popup = document.getElementById("alltabs-popup"); const box = document.getAnonymousElementByAttribute(popup, "class", "popup-internal-box"); addEventListener("popupshowing", function() { var [menuitem] = Array.filter(popup.childNodes, function(menuitem) menuitem.hasAttribute("selected")); var boxCenter = box.boxObject.screenY + box.boxObject.height / 2; var menuitemCenter = menuitem.boxObject.screenY + menuitem.boxObject.height / 2; box.scrollByPixels(menuitemCenter - boxCenter); }, false, popup); })(); // Считать и показывать количество вкладок .... function count(e) { try { window.clearTimeout( tabTimeout ) } catch(e) {}; tabTimeout = window.setTimeout(function() { var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; alltabs.label = ( all > visible ? gBrowser.visibleTabs.length + '/' : '' ) + all; }, 50 ); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs); addEventListener("TabClose", count, false, tabs); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(function () { getChangeTabGroup() }, 50 ); removeEventListener(e.type, c, false, tabs); }, false, tabs); }; getChangeTabGroup(); })(); |
Inko7 > 01-09-2013 23:15:13 |
bunda1 |
bunda1 > 01-09-2013 23:21:07 |
Inko7 пишет
Как расширить, изменить цвет фона или что ? |
>ORG@niZM< > 02-09-2013 07:09:30 |
bunda1 |
Inko7 > 02-09-2013 11:21:44 |
bunda1 пишет
когда курсор подводишь, то выделяется зона всей кнопки и вот она узковата получается... |
DarkHeavy > 26-09-2013 08:07:25 |
Вопрос: как сделать «звёздочку» кастом баттона в таком же стиле дизайна, как и остальные кнопки ? |
villa7 > 26-09-2013 11:02:37 |
DarkHeavy |
DarkHeavy > 29-09-2013 09:06:55 |
villa7 |
DarkHeavy > 29-09-2013 10:08:21 |
Заменил. Всё работает. |
villa7 > 29-09-2013 10:28:14 |
DarkHeavy |
DarkHeavy > 29-09-2013 15:14:05 |
villa7 |
DarkHeavy > 30-09-2013 02:56:03 |
okkamas_knife Кроме того, не думаю, что сейчас такие уж слабые компы, чтобы заметить скорость загрузки картинки Но всё равно спасибо |
littleleshy > 30-09-2013 13:00:28 |
DarkHeavy |
bunda1 > 20-10-2013 00:43:33 |
Показывать количество открытых табов в адресной строке+ ( Firefox 24+) Скриншот: Использование: создайте новую Custom Buttons кнопку и положите код в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую. Выделить код Код:// Показывать количество открытых табов в адресной строке +, от 19.04.2016. ..................... (()=> { // Создать в адресной строке счётчик вкладок .... var tabCounter = document.createElement("statusbarpanel"); tabCounter.id = "tabCounter"; tabCounter.setAttribute("tooltiptext", "Показать меню всех вкладок"); tabCounter.setAttribute("context", "event.stopPropagation()"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore( tabCounter, urlbarIcons.firstChild); addDestructor(()=> tabCounter.remove() ); // Отслеживать клик на счетчике .... tabCounter.onclick =e=> { if ( e.target.localName == "menuitem" ) return; tabCounter.textContent = ""; // удалить старое меню // создать новое меню всех вкладок текущей группы var menu = tabCounter.appendChild(document.createElement("menupopup")); gBrowser.visibleTabs.forEach((tab, i)=> { var mItem = document.createElement("menuitem"); mItem.index = i; mItem.setAttribute("class", "menuitem-iconic bookmark-item"); ["label", "image", "selected", "unread"].forEach(atrr=> mItem.setAttribute(atrr, tab.getAttribute(atrr)) ); menu.appendChild(mItem); }); // автоматически закрывать меню при ухода курсора, длительность увода - 450 мс menu.setAttribute("onmouseover", "this.m = false"); menu.setAttribute("onmouseleave", "this.m = true; setTimeout(()=> this.m && this.hidePopup(), 450)"); // отслеживать клики на пунктах меню menu.onmouseup =e=> { e.preventDefault(); var mItem = e.target; var tab = gBrowser.visibleTabs[mItem.index]; if ( e.button == 0 ) { mItem.removeAttribute('unread'); [...menu.children].forEach(node=> node.removeAttribute('selected') ); mItem.setAttribute('selected', true); gBrowser.selectedTab = tab; } else { gBrowser.removeTab(tab); mItem.remove(); [...menu.children].forEach((node, i)=> node.index = i ); var selectTab = gBrowser.visibleTabs.filter(tab=> tab.hasAttribute('selected') )[0]; menu.children[selectTab._tPos].setAttribute('selected', true); } }; // фокус на активную вкладку в меню при открытии var box = document.getAnonymousElementByAttribute(menu, "class", "popup-internal-box"); addEventListener("popupshowing", ()=> { var boxCenter = box.boxObject.screenY + box.boxObject.height / 2; var menuitem = [...menu.children].filter(node=> node.getAttribute("selected", "true") )[0]; menuitem.setAttribute('_moz-menuactive', true); var menuitemCenter = menuitem.boxObject.screenY + menuitem.boxObject.height / 2; box.scrollByPixels(menuitemCenter - boxCenter); }, false, menu); menu.showPopup(tabCounter, -1, -1, "popup", "bottomleft", "topleft"); // открыть меню }; // Css стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #tabCounter:hover { color: #FF1493 !important; }\ #tabCounter > menupopup scrollbox { overflow-y: auto !important; }\ #tabCounter > menupopup > menuitem[unread="true"]:not(:hover) { color: blue !important; }\ #tabCounter { -moz-appearance: none !important; border: 0 !important; margin-right: -8px !important; }\ #tabCounter > menupopup > menuitem[selected="true"] { color: red !important; font-weight: bold !important; }\ ')); var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, 0); addDestructor(()=> sss.unregisterSheet(uri, 0) ); // Считать и показывать количество вкладок .... function count() { try { window.clearTimeout(count.timeout) } catch(e) {}; count.timeout = window.setTimeout(()=> { var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; tabCounter.label = (all > visible ? visible + '/' : '') + all; }, 350); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs); addEventListener("TabClose", count, false, tabs); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(()=> getChangeTabGroup(), 50); removeEventListener(e.type, c, false, tabs); }, false, tabs); }; getChangeTabGroup(); })(); |
free13man > 29-10-2013 21:47:54 |
Автор молодец! Очень нужная вещь, особенно последний вариант кнопки! |
difabor > 14-11-2013 12:22:01 |
Я не совсем уверен, что моя просьба точно по теме, но имхо - где-то близко. Дело в том, что она не требует интеракции с пользователем - эти ограничители пользователь смог бы "забить" в коде один раз и если раз в сто лет решит изменить их, то может и отредактировать эти границы в коде кнопки куда он этот сниппет "пришил". Если эта просьба не относится к этой теме - заранее извиняюсь, но поиск по "ограничение количества табов" ничего не дал, а по "количество табов" дал эту тему. |
bunda1 > 14-11-2013 23:28:19 |
difabor |
Draco47 > 19-08-2015 11:53:55 |
Тему вверх! На дворе уж 2015 год. А с этой кнопкой счётчик стал даже ещё функциональней. Фактически, их там 2 А ранее был только один - общий. bunda1, персональное спасибо от меня! |
xrun1 > 23-08-2015 15:51:33 |
bunda1 |
villa7 > 23-08-2015 18:07:53 |
xrun1
|
xrun1 > 24-08-2015 19:01:33 |
villa7 |
difabor > 20-02-2016 20:13:00 |
Уважаемый bunda1, |
bunda1 > 20-02-2016 22:40:48 |
difabor пишет
У такой вкладки есть свойство pinned, вот пример как узнать закреплена ли текущая вкладка: или так: Выделить код Код:// Закрепить-открепить текущую вкладку var currTab = gBrowser.mCurrentTab; currTab.pinned ? gBrowser.unpinTab(currTab) : gBrowser.pinTab(currTab); или вот так: Выделить код Код:// Закрыть все вкладки слева, кроме закреплённых вкладок gBrowser.visibleTabs.forEach((tab)=> !tab.pinned && tab._tPos < gBrowser.mCurrentTab._tPos && gBrowser.removeTab(tab)); |
difabor > 20-02-2016 23:02:48 |
Большое спасибо! |
turbot > 05-03-2016 07:18:18 |
В рамках борьбы с бессонницей, pure css : Выделить код Код:@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #TabsToolbar #tabbrowser-tabs .tabbrowser-tab:first-of-type{ counter-reset: tabbrowser-tab tabbrowser-tab-pinned!important; } #TabsToolbar #tabbrowser-tabs .tabbrowser-tab:not([pinned]){ counter-increment: tabbrowser-tab !important; } #TabsToolbar #tabbrowser-tabs .tabbrowser-tab[pinned]{ counter-increment: tabbrowser-tab-pinned !important; } #TabsToolbar #tabbrowser-tabs:after { content: counter(tabbrowser-tab-pinned) "/" counter(tabbrowser-tab) !important; position: fixed !important; display: -moz-box!important; -moz-box-align: center!important; padding: 2px 0!important; /* отступы */ color: lightgreen!important; /* цвет текста */ font: 600 8px "dejavu sans mono"!important; /* толщина/размер/название шрифта */ background: none!important; /* цвет фона/прозрачный */ text-shadow: 0 0 1px rgba(0,0,0,.95), 0 0 4px rgba(0,0,0,.95)!important; /* тень у текста */ pointer-events: none!important; } |
ifln > 07-04-2016 11:01:23 |
bunda1 пишет
Можно сделать так, чтобы навигация в выпадающем списке стрелками вверх/вниз с клавы начиналась с активной вкладки? Как вызвать список хоткеем? |
xrun1 > 11-04-2016 16:36:59 |
bunda1 |
bunda1 > 18-04-2016 20:15:32 |
ifln пишет
А вот не знаю ifln пишет
Каким именно хоткеем нужно? 18-04-2016 20:19:20 xrun1 пишет
Да есть такой глюк, завтра исправлю. |
bunda1 > 19-04-2016 21:26:24 |
xrun1 пишет
Исправил: Показывать количество открытых табов в адресной строке+ |
voqabuhe > 20-04-2016 00:22:17 |
bunda1 пишет
А на жест такое меню можно подцепить? |
xrun1 > 20-04-2016 02:10:46 |
bunda1 Выделить код Код:var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; tabCounter.label = (all > visible ? visible + '/' : '') + all; Только одна цифра - общее количество табов. То есть получается, что all=visible. |
difabor > 20-04-2016 03:14:53 |
xrun1 пишет
Но чаще всего так и есть... |
bunda1 > 20-04-2016 07:58:26 |
xrun1 пишет
Это не № текущего таба / общее количество, а количество табов в текущей группе вкладок / общее количество вкладок. У тебя групп вкладок нет потому цифра в счетчике одна. 20-04-2016 07:59:38 voqabuhe пишет
А на каком расширении? |
xrun1 > 20-04-2016 10:02:56 |
bunda1 пишет
Ясно, спасибо. |
voqabuhe > 20-04-2016 12:28:58 |
bunda1 пишет
FireGestures |
_zt > 07-10-2016 23:54:51 |
bunda1 bunda1 пишет
1. А нельзя ли сделать, чтобы в меню отображалась структура дерева вкладок, как это сделано в обычной кнопке списка вкладок, при использовании treestyletab? скрытый текст 2. И еще бы, выделение не загруженных вкладок, так же как непрочитанных. |
bunda1 > 08-10-2016 18:13:48 |
_zt пишет
Не знаю как это сделать. 08-10-2016 18:14:51 _zt пишет
Можно. Какой цвет для непрочитанных? |
_zt > 08-10-2016 20:37:58 |
bunda1 bunda1 пишет
Незагруженных. Непрочитанные и так там есть. У меня в CTR так стоит #FFCCCC, в меню наверное лучше #FF6666 или около того и если возможно то курсивом. |
bunda1 > 16-10-2016 19:40:38 |
_zt пишет
Выделить код Код:// Показывать количество открытых табов в адресной строке, от 16.10.2016. .................. (()=> { // Создать в адресной строке счётчик вкладок .... var tabCounter = document.createElement("statusbarpanel"); tabCounter.setAttribute("id", "tabCounter"); tabCounter.setAttribute("context", "event.stopPropagation()"); tabCounter.setAttribute("tooltiptext", "Показать меню всех вкладок"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore(tabCounter, urlbarIcons.firstChild); addDestructor(()=> tabCounter.remove() ); // Отслеживать клик на счетчике .... tabCounter.onclick =e=> { if ( e.target.localName == "menuitem" ) return; tabCounter.textContent = ""; // удалить старое меню // создать новое меню всех вкладок текущей группы var array = ["label", "image", "selected", "unread", "busy"]; var menu = tabCounter.appendChild(document.createElement("menupopup")); gBrowser.visibleTabs.forEach(tab=> { var mItem = menu.appendChild(document.createElement("menuitem")); mItem.tab = tab; mItem.setAttribute("class", "menuitem-iconic bookmark-item"); array.forEach(atrr=> mItem.setAttribute(atrr, tab.getAttribute(atrr)) ); }); // периодически обновлять открытое меню menu.interval = setInterval(()=> menuReload(), 150); addEventListener("popuphidden", ()=> clearInterval(menu.interval), false, menu); // обновить меню function menuReload() { [...menu.children].forEach(el=> { array.forEach(atrr=> el.setAttribute(atrr, el.tab.getAttribute(atrr)) ); }) }; // автоматически закрывать меню при ухода курсора, длительность увода - 450 мс menu.onmouseover =()=> this.f = true; menu.onmouseleave =()=> { this.f = false; setTimeout(()=> !this.f && menu.hidePopup(), 450) }; // отслеживать клики на пунктах меню menu.onmouseup =e=> { e.preventDefault(); var mItem = e.target, tab = mItem.tab; if ( e.button == 0 ) gBrowser.selectedTab = tab; else { mItem.remove(); gBrowser.removeTab(tab); } menuReload(); }; // фокус на активную вкладку в меню при открытии var box = document.getAnonymousElementByAttribute(menu, "class", "popup-internal-box"); addEventListener("popupshowing", ()=> { var menuitem = [...menu.children].filter(el=> el.getAttribute("selected", "true") )[0]; menuitem.setAttribute('_moz-menuactive', true); var menuitemCenter = menuitem.boxObject.screenY + menuitem.boxObject.height/2; var boxCenter = box.boxObject.screenY + box.boxObject.height/2; box.scrollByPixels(menuitemCenter - boxCenter); }, false, menu); menu.showPopup(tabCounter, -1, -1, "popup", "bottomleft", "topleft"); // открыть меню }; // Css стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #tabCounter:hover { color: #FF1493 !important; }\ #tabCounter > menupopup scrollbox { overflow-y: auto !important; }\ #tabCounter > menupopup > menuitem[unread="true"] { color: blue !important; }\ #tabCounter { -moz-appearance: none !important; border: 0 !important; margin-right: -8px !important; }\ #tabCounter > menupopup > menuitem[selected="true"] { color: red !important; font-weight: bold !important; }\ #tabCounter > menupopup > menuitem[busy="true"] { color: #FF6666 !important; font-style: italic !important; }\ ')); var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, 0); addDestructor(()=> sss.unregisterSheet(uri, 0) ); // Считать и показывать количество вкладок .... function count() { try { window.clearTimeout(count.timeout) } catch(e) {}; count.timeout = window.setTimeout(()=> { var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; tabCounter.label = (all > visible ? visible + '/' : '') + all; }, 350); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs); addEventListener("TabClose", count, false, tabs); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(()=> getChangeTabGroup(), 50); removeEventListener(e.type, c, false, tabs); }, false, tabs); }; getChangeTabGroup(); })(); |
_zt > 17-10-2016 07:10:50 |
bunda1 |
bunda1 > 17-10-2016 10:43:41 |
_zt пишет
Выделить код Код:// Показывать количество открытых табов в адресной строке, от 16.10.2016. .................. (()=> { // Создать в адресной строке счётчик вкладок .... var tabCounter = document.createElement("statusbarpanel"); tabCounter.setAttribute("id", "tabCounter"); tabCounter.setAttribute("context", "event.stopPropagation()"); tabCounter.setAttribute("tooltiptext", "Показать меню всех вкладок"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore(tabCounter, urlbarIcons.firstChild); addDestructor(()=> tabCounter.remove() ); // Отслеживать клик на счетчике .... tabCounter.onclick =e=> { if ( e.target.localName == "menuitem" ) return; tabCounter.textContent = ""; // удалить старое меню // создать новое меню всех вкладок текущей группы var array = ["label", "image", "selected", "unread", "pending"]; var menu = tabCounter.appendChild(document.createElement("menupopup")); gBrowser.visibleTabs.forEach(tab=> { var mItem = menu.appendChild(document.createElement("menuitem")); mItem.tab = tab; mItem.setAttribute("class", "menuitem-iconic bookmark-item"); array.forEach(atrr=> mItem.setAttribute(atrr, tab.getAttribute(atrr)) ); }); // периодически обновлять открытое меню menu.interval = setInterval(()=> menuReload(), 150); addEventListener("popuphidden", ()=> clearInterval(menu.interval), false, menu); // обновить меню function menuReload() { [...menu.children].forEach(el=> { array.forEach(atrr=> el.setAttribute(atrr, el.tab.getAttribute(atrr)) ); }) }; // автоматически закрывать меню при ухода курсора, длительность увода - 450 мс menu.onmouseover =()=> this.f = true; menu.onmouseleave =()=> { this.f = false; setTimeout(()=> !this.f && menu.hidePopup(), 450) }; // отслеживать клики на пунктах меню menu.onmouseup =e=> { e.preventDefault(); var mItem = e.target, tab = mItem.tab; if ( e.button == 0 ) gBrowser.selectedTab = tab; else { mItem.remove(); gBrowser.removeTab(tab); } menuReload(); }; // фокус на активную вкладку в меню при открытии var box = document.getAnonymousElementByAttribute(menu, "class", "popup-internal-box"); addEventListener("popupshowing", ()=> { var menuitem = [...menu.children].filter(el=> el.getAttribute("selected", "true") )[0]; menuitem.setAttribute('_moz-menuactive', true); var menuitemCenter = menuitem.boxObject.screenY + menuitem.boxObject.height/2; var boxCenter = box.boxObject.screenY + box.boxObject.height/2; box.scrollByPixels(menuitemCenter - boxCenter); }, false, menu); menu.showPopup(tabCounter, -1, -1, "popup", "bottomleft", "topleft"); // открыть меню }; // Css стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #tabCounter:hover { color: #FF1493 !important; }\ #tabCounter > menupopup scrollbox { overflow-y: auto !important; }\ #tabCounter > menupopup > menuitem[unread="true"] { color: blue !important; }\ #tabCounter { -moz-appearance: none !important; border: 0 !important; margin-right: -8px !important; }\ #tabCounter > menupopup > menuitem[selected="true"] { color: red !important; font-weight: bold !important; }\ #tabCounter > menupopup > menuitem[pending="true"] { color: #FF6666 !important; font-style: italic !important; }\ ')); var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, 0); addDestructor(()=> sss.unregisterSheet(uri, 0) ); // Считать и показывать количество вкладок .... function count() { try { window.clearTimeout(count.timeout) } catch(e) {}; count.timeout = window.setTimeout(()=> { var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; tabCounter.label = (all > visible ? visible + '/' : '') + all; }, 350); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs); addEventListener("TabClose", count, false, tabs); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(()=> getChangeTabGroup(), 50); removeEventListener(e.type, c, false, tabs); }, false, tabs); }; getChangeTabGroup(); })(); |
voqabuhe > 17-10-2016 12:55:01 |
bunda1 |
_zt > 18-10-2016 02:51:19 |
bunda1 скрытый текст |
rsuan > 14-01-2017 07:23:18 |
Здравствуйте. Искал кнопку для вывода меню открытых вкладок, подсказали эту тему. Хороший вариант, единственное что мне не хватает - сортировки типа "история последних используемых вкладок" для быстрого перехода к недавним вкладкам. Т.е. прошлая вкладка будет первым пунктом, позапрошлая вторым, и так далее. Древовидное отображение вкладок, думаю, не нужно. Для этого ведь есть расширение TreeStyleTab, им можно расположить вкладки слева или справа в древовидном виде, и настроить автоскрытие панели вкладок. А функционала меню вкладок с сортировкой по использованию не нашёл. |
bunda1 > 14-01-2017 14:07:36 |
rsuan пишет
В меню вкладок первыми будут прочитанные в текущей сессии вкладки отсортированные по времени посещаемости остальные вкладки будут в том порядке как на панели вкладок: Выделить код Код:// Показывать количество открытых табов в адресной строке, от 14.01.2017. .................. (()=> { // Создать в адресной строке счётчик вкладок .... var tabCounter = document.createElement("statusbarpanel"); tabCounter.setAttribute("id", "tabCounter"); tabCounter.setAttribute("context", "event.stopPropagation()"); tabCounter.setAttribute("tooltiptext", "Показать меню всех вкладок"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore(tabCounter, urlbarIcons.firstChild); addDestructor(()=> tabCounter.remove() ); // Отслеживать клик на счетчике .... tabCounter.onclick =e=> { if ( e.target.localName == "menuitem" ) return; tabCounter.textContent = ""; // удалить старое меню // Создать массив с вкладками и сортировать по посещаемости var tabsArray = gBrowser.visibleTabs; tabsArray.sort((a, b)=> b.getAttribute('data') - a.getAttribute('data')); // создать новое меню всех вкладок текущей группы var array = ["label", "image", "selected", "unread", "pending"]; var menu = tabCounter.appendChild(document.createElement("menupopup")); tabsArray.forEach(tab=> { var mItem = menu.appendChild(document.createElement("menuitem")); mItem.tab = tab; mItem.setAttribute("class", "menuitem-iconic bookmark-item"); array.forEach(atrr=> mItem.setAttribute(atrr, tab.getAttribute(atrr)) ); }); // периодически запускать обновление меню menu.interval = setInterval(()=> menuReload(), 200); addEventListener("popuphidden", ()=> clearInterval(menu.interval), false, menu); // обновить меню function menuReload() { [...menu.children].forEach(el=> { array.forEach(atrr=> el.setAttribute(atrr, el.tab.getAttribute(atrr)) ); }) }; // автоматически закрывать меню при ухода курсора, длительность увода - 450 мс menu.onmouseover =()=> this.f = true; menu.onmouseleave =()=> { this.f = false; setTimeout(()=> !this.f && menu.hidePopup(), 450) }; // отслеживать клики на пунктах меню menu.onmouseup =e=> { e.preventDefault(); var mItem = e.target, tab = mItem.tab; if ( e.button == 0 ) gBrowser.selectedTab = tab; else { mItem.remove(); gBrowser.removeTab(tab); } menuReload(); }; // фокус на активную вкладку в меню при открытии var box = document.getAnonymousElementByAttribute(menu, "class", "popup-internal-box"); addEventListener("popupshowing", ()=> { var menuitem = [...menu.children].filter(el=> el.getAttribute("selected", "true") )[0]; menuitem.setAttribute('_moz-menuactive', true); var menuitemCenter = menuitem.boxObject.screenY + menuitem.boxObject.height/2; var boxCenter = box.boxObject.screenY + box.boxObject.height/2; box.scrollByPixels(menuitemCenter - boxCenter); }, false, menu); menu.showPopup(tabCounter, -1, -1, "popup", "bottomleft", "topleft"); // открыть меню }; // Css стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #tabCounter:hover { color: #FF1493 !important; }\ #tabCounter > menupopup scrollbox { overflow-y: auto !important; }\ #tabCounter > menupopup > menuitem[unread="true"],\ #tabCounter > menupopup > menuitem[pending="true"] { color: blue !important; }\ #tabCounter { -moz-appearance: none !important; border: 0 !important; margin-right: -8px !important; }\ #tabCounter > menupopup > menuitem[selected="true"] { color: red !important; font-weight: bold !important; }\ ')); var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, 0); addDestructor(()=> sss.unregisterSheet(uri, 0) ); // Считать и показывать количество вкладок .... function count() { try { window.clearTimeout(count.timeout) } catch(e) {}; count.timeout = window.setTimeout(()=> { var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; tabCounter.label = (all > visible ? visible + '/' : '') + all; }, 350); }; count(); // Добавить к вкладке как аргумент время посещаемости вкладки .... addEventListener("TabSelect", (e, tab = e.target)=> { tab.setAttribute('data', Date.now()); }, true, gBrowser.tabContainer); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs); addEventListener("TabClose", count, false, tabs); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(()=> getChangeTabGroup(), 50); removeEventListener(e.type, c, false, tabs); }, false, tabs); }; getChangeTabGroup(); })(); |
_zt > 14-01-2017 18:11:09 |
rsuan |
ag4 > 02-02-2017 11:20:24 |
Приветствую. После выхода новой версии FF (51.0.1) у вас работает этот счетчик? |
toltec > 02-02-2017 11:33:53 |
ag4 |
ag4 > 02-02-2017 12:45:01 |
toltec |
mahtanoronra > 13-02-2017 09:09:32 |
bunda1 |
bunda1 > 14-02-2017 10:29:49 |
mahtanoronra пишет
Выделить код Код:// Показывать количество открытых табов в адресной строке, от 16.10.2016. .................. (()=> { // Создать в адресной строке счётчик вкладок .... var tabCounter = document.createElement("statusbarpanel"); tabCounter.setAttribute("id", "tabCounter"); tabCounter.setAttribute("context", "event.stopPropagation()"); tabCounter.setAttribute("tooltiptext", "Показать меню всех вкладок"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore(tabCounter, urlbarIcons.firstChild); addDestructor(()=> tabCounter.remove() ); // Отслеживать клик на счетчике .... tabCounter.onclick =e=> { if ( e.target.localName == "menuitem" ) return; tabCounter.textContent = ""; // удалить старое меню // создать новое меню всех вкладок текущей группы var array = ["label", "image", "selected", "unread", "pending"]; var menu = tabCounter.appendChild(document.createElement("menupopup")); gBrowser.visibleTabs.forEach(tab=> { var mItem = menu.appendChild(document.createElement("menuitem")); mItem.tab = tab; mItem.setAttribute("class", "menuitem-iconic bookmark-item"); array.forEach(atrr=> mItem.setAttribute(atrr, tab.getAttribute(atrr)) ); }); // периодически запускать обновление меню menu.interval = setInterval(()=> menuReload(), 200); addEventListener("popuphidden", ()=> clearInterval(menu.interval), false, menu); // обновить меню function menuReload() { [...menu.children].forEach(el=> { array.forEach(atrr=> el.setAttribute(atrr, el.tab.getAttribute(atrr)) ); }) }; // автоматически закрывать меню при ухода курсора, длительность увода - 450 мс menu.onmouseover =()=> this.f = true; menu.onmouseleave =()=> { this.f = false; setTimeout(()=> !this.f && menu.hidePopup(), 450) }; // отслеживать клики на пунктах меню menu.onmouseup =e=> { e.preventDefault(); var mItem = e.target, tab = mItem.tab; if ( e.button == 0 ) gBrowser.selectedTab = tab; else { mItem.remove(); gBrowser.removeTab(tab); } menuReload(); }; // фокус на активную вкладку в меню при открытии var box = document.getAnonymousElementByAttribute(menu, "class", "popup-internal-box"); addEventListener("popupshowing", ()=> { var menuitem = [...menu.children].filter(el=> el.getAttribute("selected", "true") )[0]; menuitem.setAttribute('_moz-menuactive', true); var menuitemCenter = menuitem.boxObject.screenY + menuitem.boxObject.height/2; var boxCenter = box.boxObject.screenY + box.boxObject.height/2; box.scrollByPixels(menuitemCenter - boxCenter); }, false, menu); menu.showPopup(tabCounter, -1, -1, "popup", "bottomleft", "topleft"); // открыть меню }; // Css стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #tabCounter:hover { color: #FF1493 !important; }\ #tabCounter > menupopup scrollbox { overflow-y: auto !important; }\ #tabCounter > menupopup > menuitem[unread="true"],\ #tabCounter > menupopup > menuitem[pending="true"] { color: blue !important; }\ #tabCounter { -moz-appearance: none !important; border: 0 !important; margin-right: -8px !important; }\ #tabCounter > menupopup > menuitem[selected="true"] { color: red !important; font-weight: bold !important; }\ ')); var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, 0); addDestructor(()=> sss.unregisterSheet(uri, 0) ); // Считать и показывать количество вкладок .... function count() { try { window.clearTimeout(count.timeout) } catch(e) {}; count.timeout = window.setTimeout(()=> { var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length, num = gBrowser.mCurrentTab._tPos; tabCounter.label = num + "(" + (num+1) + " из " + ((all > visible ? visible + '/' : '') + all) + ")" + (visible-num); }, 350); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs); addEventListener("TabClose", count, false, tabs); addEventListener("TabSelect", count, false, tabs); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(()=> getChangeTabGroup(), 50); removeEventListener(e.type, c, false, tabs); }, false, tabs); }; getChangeTabGroup(); })(); |
rsuan > 02-08-2017 17:12:16 |
Обновил на версию 52.2.1 esr (была 45.9 esr), счётчик в адресной строке пропал. Код использую крайний. |
Stkvsky > 10-08-2017 14:15:54 |
Ребята, а можете достать из этого кода только счетчик открытых вкладок и все, в виде кнопки? |
becool > 12-09-2017 14:25:56 |
bunda1, сделай, пожалуйста, версию, которая просто показывает общее число вкладок в окне без дробей, без подразделения на группы. |
bunda1 > 12-09-2017 17:46:53 |
becool пишет
Выделить код Код:// Показывать количество открытых табов в адресной строке, от 16.10.2016. .................. (()=> { // Создать в адресной строке счётчик вкладок .... var tabCounter = document.createElement("statusbarpanel"); tabCounter.setAttribute("id", "tabCounter"); tabCounter.setAttribute("context", "event.stopPropagation()"); tabCounter.setAttribute("tooltiptext", "Показать меню всех вкладок"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore(tabCounter, urlbarIcons.firstChild); addDestructor(()=> tabCounter.remove() ); // Отслеживать клик на счетчике .... tabCounter.onclick =e=> { if ( e.target.localName == "menuitem" ) return; tabCounter.textContent = ""; // удалить старое меню // создать новое меню всех вкладок текущей группы var array = ["label", "image", "selected", "unread", "pending"]; var menu = tabCounter.appendChild(document.createElement("menupopup")); [...gBrowser.tabs].forEach(tab=> { var mItem = menu.appendChild(document.createElement("menuitem")); mItem.tab = tab; mItem.setAttribute("class", "menuitem-iconic bookmark-item"); array.forEach(atrr=> mItem.setAttribute(atrr, tab.getAttribute(atrr)) ); }); // периодически запускать обновление меню menu.interval = setInterval(()=> menuReload(), 200); addEventListener("popuphidden", ()=> clearInterval(menu.interval), false, menu); // обновить меню function menuReload() { [...menu.children].forEach(el=> { array.forEach(atrr=> el.setAttribute(atrr, el.tab.getAttribute(atrr)) ); }) }; // автоматически закрывать меню при ухода курсора, длительность увода - 450 мс menu.onmouseover =()=> this.f = true; menu.onmouseleave =()=> { this.f = false; setTimeout(()=> !this.f && menu.hidePopup(), 450) }; // отслеживать клики на пунктах меню menu.onmouseup =e=> { e.preventDefault(); var mItem = e.target, tab = mItem.tab; if ( e.button == 0 ) gBrowser.selectedTab = tab; else { mItem.remove(); gBrowser.removeTab(tab); } menuReload(); }; // фокус на активную вкладку в меню при открытии var box = document.getAnonymousElementByAttribute(menu, "class", "popup-internal-box"); addEventListener("popupshowing", ()=> { var menuitem = [...menu.children].filter(el=> el.getAttribute("selected", "true") )[0]; menuitem.setAttribute('_moz-menuactive', true); var menuitemCenter = menuitem.boxObject.screenY + menuitem.boxObject.height/2; var boxCenter = box.boxObject.screenY + box.boxObject.height/2; box.scrollByPixels(menuitemCenter - boxCenter); }, false, menu); menu.showPopup(tabCounter, -1, -1, "popup", "bottomleft", "topleft"); // открыть меню }; // Css стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ #tabCounter:hover { color: #FF1493 !important; }\ #tabCounter > menupopup scrollbox { overflow-y: auto !important; }\ #tabCounter > menupopup > menuitem[unread="true"],\ #tabCounter > menupopup > menuitem[pending="true"] { color: blue !important; }\ #tabCounter { -moz-appearance: none !important; border: 0 !important; margin-right: -8px !important; }\ #tabCounter > menupopup > menuitem[selected="true"] { color: red !important; font-weight: bold !important; }\ ')); var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, 0); addDestructor(()=> sss.unregisterSheet(uri, 0) ); // Считать и показывать количество вкладок .... function count() { try { window.clearTimeout(count.timeout) } catch(e) {}; count.timeout = window.setTimeout(()=> { tabCounter.label = gBrowser.tabs.length; }, 350); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs); addEventListener("TabClose", count, false, tabs); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(()=> getChangeTabGroup(), 50); removeEventListener(e.type, c, false, tabs); }, false, tabs); }; getChangeTabGroup(); })(); |
becool > 12-09-2017 18:36:25 |
|
broker > 20-11-2017 00:15:38 |
На 57 не работает, можно поправить |
bunda1 > 22-11-2017 13:34:13 |
broker пишет
А у тебя Сustom Buttons на Firefox 57 вообще работает? |
broker > 22-11-2017 16:04:36 |
bunda1
Да! В теме Сustom Buttons Infocatcher и Dumby поделились "распорками" "костылями" все работает .Со всех кнопок не работают кнопки: папка загрузки,Кнопка для управления масштабом страницы в адресной строке,Показывать потребление памяти в адресной строке,Показывать количество открытых табов в адресной строке. |
Coroner > 25-11-2017 14:42:52 |
broker пишет
Мне помогли починить её на руборде, спасибо gyra и другим пользователям... Только с положением её относительно остальных элементов в урл не так всё просто: скрытый текст Сдвинуть бы относительно других элементов... Сама она двигается изменением стиля, например скрытый текст Но при этом попадает под те элементы, которые там в урл находятся. Оригинал самой кнопки (той, которой у меня) я на форуме найти не могу. |
bunda1 > 27-11-2017 21:41:10 |
Исправил Показывать количество открытых табов в адресной строке для Firefox 57. |
broker > 28-11-2017 00:42:55 |
Coroner
Поделитесь кнопкой, Спасибо. |
adidharma > 07-12-2017 16:32:45 |
broker |
broker > 07-12-2017 17:38:22 |
adidharma |
bunda1 > 07-12-2017 21:39:45 |
adidharma пишет
Хорошо, спасибо. |
Viatcheslav > 08-12-2017 06:27:23 |
adidharma пишет
Заработать-то заработала, только вот показывает непонятно что. Если сложить память всех процессов в Диспетчере задач и сравнить с тем, что выдаёт кнопка - разница приличная. Я, возможно, что-то неправильно понимаю |
adidharma > 08-12-2017 07:33:00 |
Viatcheslav пишет
Да, это я не учёл - проверял с отключенной e10s. С включённой и правда ерунда получается. Но тут уже саму кнопку надо переделывать, насколько понимаю? скрытый текст Печально с этой e10s... Некоторые кнопки перестали работать - Копировать ссылку(BBCode)+*, Текстовые смайлы и Вставка символа в текстовое поле. Может, кому встречались фиксы? По форуму поискал - что-то ничего не нашёл, а самостоятельно поправить не получается (есть похожие рабочие кнопки - Link Master (Context menu) и BB Code Menu) * Эта не работает и при откл. мультипроцессности. |
broker > 08-12-2017 17:02:10 |
Viatcheslav,adidharma |
Viatcheslav > 08-12-2017 20:01:26 |
broker пишет
Если можно, в этом месте, пожалуйста, подробнее - где прописано и чем сбрасывает? Спасибо |
broker > 08-12-2017 21:21:58 |
Viatcheslav скрытый текст Выделить код Код:var memoryDisplay = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("page-action-buttons"); urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки memoryDisplay.id = "memoryDisplay"; memoryDisplay.label = getMemory() + ' MB'; memoryDisplay.style.cssText = "-moz-appearance: none; border: 0; padding: 0; margin-right:-6px; margin-left: -1px;"; // Css стиль для счётчика self.timer = setInterval(function() { var memory = getMemory(); memoryDisplay.label = memory + ' MB'; if ( memory > 600 ) { var file= Components.classes["@mozilla.org/file/directory_service;1"]. getService(Components.interfaces.nsIProperties). get("ProfD", Components.interfaces.nsIFile); file.initWithPath(file.path + "\\Soft\\afom.exe"); file.launch(); } }, 2000 ); // Всплывающая подсказка у счётчика отображает заполнение дискового кеша...................................... var k = 100, mb = 1024 * 1024, str = "", cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService), visitor = { visitDevice: addInfo }; function addInfo(device, info) { str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache: " + [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / "); }; memoryDisplay.onmouseenter = function() { str = ""; cs.visitEntries(visitor); memoryDisplay.tooltipText = "Л: Подробно показать потребление памяти в вкладке" + "\n\n" + str; }; ///////////// Получить всю занимаемую оперативную память в MB .............................................//////////// function getMemory() { var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager); try { var e = reporterManager.enumerateReporters(); while ( e.hasMoreElements() ) { var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter); self[mr.path] = mr; } var memory = self["resident"].amount; } catch(e) { var memory = reporterManager.resident; } // FF26 - Nightly return ( Math.round( memory/1048576 ) ); }; // По клику подробно показать потребление памяти в вкладке, автор кода 'Dumby' ......................... memoryDisplay.onclick = function(e) { if ( e.button ) return; var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") ); // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице memoryTab.addEventListener("pageshow", function c(e) { this.removeEventListener( e.type, c ); setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0); }); }; // Удалять счётчик памяти и другие изменения ............................................................ addDestructor(function() { urlbarIcons.removeChild( memoryDisplay ) try { window.clearTimeout( self.timer ) } catch(e) {}; }); здесь лежит http://rgho.st/6TbY4J2Kx Afom.exe возможно будет ругаться антивирус! оно выдрано с расширения не помню как называлось. Напомню то не панацея но если RAM мало можно попробовать. |
Viatcheslav > 09-12-2017 10:45:31 |
broker, спасибо ПРЕБОЛЬШОЕ Хочу уточнить - этот код broker пишет
для Custom Buttons, или его прописать в userChrome.css? |
broker > 10-12-2017 03:10:57 |
Viatcheslav |
Coroner > 10-12-2017 15:01:02 |
broker пишет
afom.exe выдран из Обсуждение расширений » AFOM |
broker > 10-12-2017 15:47:11 |
Coroner |
Coroner > 10-12-2017 21:26:26 |
broker пишет
Не совсем по теме, но коли разговор зашёл... Не пробовали Tab Suspender (memory saver) ? |
broker > 10-12-2017 23:52:32 |
Coroner пишет
Нет, я пользуюсь только Afom дисковый кеш вырубил, SSD жалко остальное в память. Если открыть браузер и почитать новости, почту проверить кушает около 470мб, а вот ютуб и несколько форумов до 900мб получается. Afom не позволяет отжырать сколько, Вы попробуйте и будет видно так счетчик постоянно мониторить потребление памяти. |
Coroner > 10-12-2017 23:58:35 |
broker пишет
Я пробовал когда-то. Но видимо из-за старого железа (отсутствия SSD) "восстановление" сброшенной памяти происходит довольно медленно, в результате работа с браузером замедляется больше, чем плюнуть на это и пусть ест сколько хочет (всё равно больше 800 не ест). |
broker > 04-11-2018 22:55:19 |
Народ есть кнопка которая работает на последней esr? Привык уже до боли. |
Andrey_Krropotkin > 19-04-2019 23:33:53 |
На 66 работало, на 66.03 работает некорректно скрытый текст Выделить код Код:/*Initialization Code*/ // Показывать количество открытых табов в адресной строке +, от 27.11.2017. ................................ (function () { //var tabCounter=this.id; //var urlbar = document.getElementById("page-action-buttons"); var button = document.getElementById("tabCounter"); self.onclick = function(e) { if ( e.button == 0 ) return PanelUI.showSubView('allTabsMenu-allTabsView', this); }; // Стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ %button% { -moz-appearance: none !important; border: 0 !important; margin-right: -4px !important; }\ %button% {color: #4800FF !important;}\ %button% .toolbarbutton-icon {width: -0px !important; background-color: RGB(235, 226 ,210) !important}\ %button% .toolbarbutton-text {\ display: -moz-box !important; margin-left: -8px !important; color: #4800FF !important; font-weight: bold !important;\ }\ %button% {\ -moz-box-orient: horizontal !important;\ }\ '.replace(/%button%/g, "#" + _id) )); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); addDestructor(function() { sss.unregisterSheet(uri, sss.AGENT_SHEET) }); // Считать и показывать количество вкладок .... function count() { try { window.clearTimeout( tabTimeout ) } catch(e) {}; tabTimeout = window.setTimeout(function() { var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; // self.label = ( all > visible ? gBrowser.visibleTabs.length + '/' : '' ) + all; self.label = all; }, 50 ); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs ); addEventListener("TabClose", count, false, tabs ); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(function() { getChangeTabGroup() }, 50 ) removeEventListener( e.type, c, false, tabs ); }, false, tabs ); }; getChangeTabGroup(); })() Помогите исправить |
SanchiZ > 03-05-2019 21:06:09 |
Поправьте пож-та кнопку для 60+ |
bunda1 > 10-05-2019 17:21:02 |
SanchiZ пишет
Исправил: Показывать количество открытых табов в адресной строке 10-05-2019 17:29:37 Andrey_Krropotkin пишет
Выделить код Код:// Показывать количество открытых табов в адресной строке +, от 10.05.2019. ................................ (function () { self.onclick = function(e) { if ( e.button == 0 ) return PanelUI.showSubView('allTabsMenu-allTabsView', this); }; // Стиль для счётчика и меню .... var uri = makeURI('data:text/css,'+ encodeURIComponent('\ %button% { -moz-appearance: none !important; border: 0 !important; margin-right: -4px !important; }\ %button% {color: #4800FF !important;}\ %button% .toolbarbutton-icon {width: -0px !important; background-color: RGB(235, 226 ,210) !important}\ %button% .toolbarbutton-text {\ display: -moz-box !important; margin-left: -8px !important; color: #4800FF !important; font-weight: bold !important;\ }\ %button% {\ -moz-box-orient: horizontal !important;\ }\ '.replace(/%button%/g, "#" + _id) )); const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); addDestructor(function() { sss.unregisterSheet(uri, sss.AGENT_SHEET) }); // Считать и показывать количество вкладок .... function count() { try { window.clearTimeout( tabTimeout ) } catch(e) {}; tabTimeout = window.setTimeout(function() { self.label = gBrowser.visibleTabs.length; }, 50 ); }; count(); // Отслеживать открытие, закрытие вкладок и переключение групп вкладок .... var tabs = gBrowser.tabContainer; addEventListener("TabOpen", count, false, tabs ); addEventListener("TabClose", count, false, tabs ); function getChangeTabGroup() { addEventListener("TabHide", function c(e) { count(); setTimeout(function() { getChangeTabGroup() }, 50 ) removeEventListener( e.type, c, false, tabs ); }, false, tabs ); }; getChangeTabGroup(); })() |