villa7
Я её в папку с профайлом засунул. Но за совет спасибо Нажму завтра, когда на работу приду
Если тебя не помнят — значит тебя не существовало... ©
Отсутствует
okkamas_knife
Да там картинка на сотен байт
Кроме того, не думаю, что сейчас такие уж слабые компы, чтобы заметить скорость загрузки картинки Но всё равно спасибо
Если тебя не помнят — значит тебя не существовало... ©
Отсутствует
DarkHeavy
А если картинка не одна? Да и самое узкое место ЛЮБОЙ системы — подсистема хранения данных.
Отсутствует
Показывать количество открытых табов в адресной строке+ ( Firefox 24+)
Автор: bunda1
Версия: от 19.04.2016.
Описание: Код создаёт кнопку в адресной строке которая показывает количество всех открытых табов и количество открытых табов текущей группы вкладок. Кнопка открывает меню со списком вкладок текущей группы, в меню название текущей вкладки отображается красным цветом а не прочитанные вкладки синим цветом. Меню вкладок даёт возможность левым кликом переключится на нужную вкладку и правым кликом удалять вкладки не закрывая меню. Меню вкладок автоматически закрывается при уводе курсора, длительность увода можно установить в коде.
// Показывать количество открытых табов в адресной строке +, от 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(); })();
Отредактировано bunda1 (20-10-2013 13:18:52)
Отсутствует
Я не совсем уверен, что моя просьба точно по теме, но имхо - где-то близко.
Был такой аддон "Load Tabs Progressively", но для новых версий ФФ (для 25-й - точно) он устарел и недоступен. Он ограничивал число одновременно загружаемых вкладок (чтобы загружалось не более К вкладок одновременно), а остальные - по мере завершения загрузки предыдущих. Он также ограничивал общее число непрочитанных вкладок, то есть вкладки сверх общего числа непрочитанных (N) - вообще не показывались - только по мере прочтения предыдущих.
Поэтому даже если открывать сразу все закладки какого-то немаленького букмаркфолдера - это не перегружало бы браузер.
Можно ли добавить эту функциональность (в виде сниппета, т.е., чтобы её можно было "пришить" к другим кнопкам, напр. "Memory monitor")?
Дело в том, что она не требует интеракции с пользователем - эти ограничители пользователь смог бы "забить" в коде один раз и если раз в сто лет решит изменить их, то может и отредактировать эти границы в коде кнопки куда он этот сниппет "пришил".
Если эта просьба не относится к этой теме - заранее извиняюсь, но поиск по "ограничение количества табов" ничего не дал, а по "количество табов" дал эту тему.
Отредактировано difabor (14-11-2013 12:37:16)
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Тему вверх! На дворе уж 2015 год.
И я был крайне удивлён, обнаружив этот код, да притом ещё рабочий до сих пор!
Уж сколько я перепробовал расширений с официального сайта дополнений - устроило всего лишь одно! И то отвалилось при переходе на Firefox 40.0.2: https://addons.mozilla.org/ru/firefox/addon/open-tab-count-widget/ . Видимо, автор просто забыл про него
А с этой кнопкой счётчик стал даже ещё функциональней. Фактически, их там 2 А ранее был только один - общий.
Некоторое время думал - куда убрать кнопку, чтоб не занимала место? Решение простое - просто убрал её на ту панель, которая всегда скрыта
bunda1, персональное спасибо от меня!
Отсутствует
bunda1
А можно изменить цвет кол-ва вкладок в адресной строке, например, синим или любым другим цветом.? Так с кнопкой Memory Monitor трудно различить на некоторых сайтах.
Отредактировано xrun1 (23-08-2015 15:53:09)
Отсутствует
Уважаемый bunda1,
а как определить - закреплена вкладка (pinned) или нет?
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
а как определить - закреплена вкладка (pinned) или нет?
У такой вкладки есть свойство 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));
Отсутствует
В рамках борьбы с бессонницей, 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; }
Отсутствует
Показывать количество открытых табов в адресной строке+ ( Firefox 17+)
Автор: bunda1
Версия: от 20.10.2013.
Можно сделать так, чтобы навигация в выпадающем списке стрелками вверх/вниз с клавы начиналась с активной вкладки?
Как вызвать список хоткеем?
Отсутствует
bunda1
Что-то кнопка неправильно работает, только сегодня заметил. 45.0.1, Custom Buttons 0.0.5.8.9, в остальном профиль дефолтный.
Гифку загрузить не удалось, сделал небольшое видео. https://cloud.mail.ru/public/CGqi/xBNnXGGdp
Отсутствует
Можно сделать так, чтобы навигация в выпадающем списке стрелками вверх/вниз с клавы начиналась с активной вкладки?
А вот не знаю
Как вызвать список хоткеем?
Каким именно хоткеем нужно?
Добавлено 18-04-2016 20:19:20
bunda1
Что-то кнопка неправильно работает, только сегодня заметил.
Да есть такой глюк, завтра исправлю.
Отредактировано bunda1 (18-04-2016 20:19:20)
Отсутствует
bunda1
Что-то кнопка неправильно работает, только сегодня заметил. 45.0.1, Custom Buttons 0.0.5.8.9, в остальном профиль дефолтный.
Гифку загрузить не удалось, сделал небольшое видео. https://cloud.mail.ru/public/CGqi/xBNnXGGdp
Исправил: Показывать количество открытых табов в адресной строке+
Отсутствует
Кнопка открывает меню со списком вкладок текущей группы, в меню название текущей вкладки отображается красным цветом а не прочитанные вкладки синим цветом. Меню вкладок даёт возможность левым кликом переключится на нужную вкладку и правым кликом удалять вкладки не закрывая меню. Меню вкладок автоматически закрывается при уводе курсора, длительность увода можно установить в коде.
А на жест такое меню можно подцепить?
Отсутствует
bunda1
Странно, но у меня не показывается в виде № текущего таба / общее количество (как у тебя на скрине).
var all = gBrowser.tabs.length, visible = gBrowser.visibleTabs.length; tabCounter.label = (all > visible ? visible + '/' : '') + all;
Только одна цифра - общее количество табов. То есть получается, что all=visible.
Профиль дефолтный, Custom Buttons + 1 кнопка. 45.0.2.
UPD; Если это сложно - не заморачивайся, мне не принципиально. И так достаточно общего количества и меню при клике. Спасибо.
Отредактировано xrun1 (20-04-2016 02:13:20)
Отсутствует
bunda1
Странно, но у меня не показывается в виде № текущего таба / общее количество (как у тебя на скрине).
Но чаще всего так и есть...
Они начинают отличаться, когда все табы не умещаются
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
bunda1
Странно, но у меня не показывается в виде № текущего таба / общее количество (как у тебя на скрине).
Это не № текущего таба / общее количество, а количество табов в текущей группе вкладок / общее количество вкладок. У тебя групп вкладок нет потому цифра в счетчике одна.
Добавлено 20-04-2016 07:59:38
А на жест такое меню можно подцепить?
А на каком расширении?
Отредактировано bunda1 (20-04-2016 07:59:38)
Отсутствует
Это не № текущего таба / общее количество, а количество табов в текущей группе вкладок / общее количество вкладок. У тебя групп вкладок нет потому цифра в счетчике одна.
Ясно, спасибо.
Отсутствует