bunda1, а еще хотелка есть, добавлять текст в файл по имени сайта.К примеру скопированный текст со страницы https://forum.mozilla-russia.org/viewtopic.php?pid=770076 - сохраняем/добавляем в текстовой документ под именем /forum.mozilla-russia.org/.txt (примерно так).
Или чего я выдумываю, можно через getTabLabel() название файла задать. На рабочий стол прямо можно, как легче писать в общем.
С зачеркнутой половиной разобрался, осталось имя сайта получить - как?
/forum.mozilla-russia.org/ - без слэшей.
Отсутствует
Отсутствует
alert("/forum.mozilla-russia.org/".replace(/\//g, ""));
Отсутствует
Отсутствует
Здравствуйте, cделайте пожайлуйста мне кнопку, чтобы при нажатии добавлялось https://web.archive.org/web/0/ к адресу в адресной строке, и чтобы сразу осуществлялся переход на тот адрес.
Т.е. когда ошибка 404, то открывался бы веб-архив. Буду благодарен.
Отсутствует
Здравствуйте, cделайте пожайлуйста мне кнопку, чтобы при нажатии добавлялось https://web.archive.org/web/0/ к адресу в адресной строке, и чтобы сразу осуществлялся переход на тот адрес.
gBrowser.selectedTab = gBrowser.addTab('http://web.archive.org/web/' + gBrowser.currentURI.spec, {triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),});
Отсутствует
bunda1, работает, спасибо !!!
А можно я еще попрошу, но теперь сложное?
Вы по просьбам пользователей создали 3 варианта скрипта, отображающего список открытых вкладок, и показывающего их количество. Из них я выбрал наилучший, но нужна одна доработка: чтобы показывало номер текущей открытой вкладки: текущая/все. Например: 6/21. Это возможно?
Код называется: // Показывать количество открытых табов в адресной строке, от 16.10.2016. .......
Отредактировано iyut (22-05-2019 10:21:13)
Отсутствует
чтобы показывало номер текущей открытой вкладки: текущая/все. Например: 6/21. Это возможно?
Код называется: // Показывать количество открытых табов в адресной строке, от 16.10.2016. .......
И где номер должен находится? Перед иконками или где?
Отсутствует
bunda1, а тут можно как-то сделать чтоб правильно/раздельно работало нажатие на кнопку и двойное нажатие на эту же кнопку?
addEventListener('keydown', function c(e) { //Двойное нажатие if ((!e.ctrlKey) && e.keyCode == 19 && c.flag ) { e.preventDefault(); alert(2); }; c.flag = true; setTimeout(function() { c.flag = false }, 600); //Одиночное нажатие if ( (!e.ctrlKey) && (e.keyCode == 19) ) { e.preventDefault(); alert(1); } });
Отсутствует
нужна одна доработка: чтобы показывало номер текущей открытой вкладки: текущая/все. Например: 6/21. Это возможно?
// Показывать количество открытых табов в адресной строке, от 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(()=> { tabCounter.label = (gBrowser.selectedTab._tPos + 1) + '/' + gBrowser.tabs.length; }, 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(); })();
Добавлено 22-05-2019 21:39:55
bunda1, наверное, чтобы работали хоткеи кнопок после закрытия окна,
нужно их каким-то образом заново инициализировать.
Незнаю! Но можно запускать горячие клавиши кодом, вот например как тут Сегодня 21:13:36 или как тут Сегодня 21:23:53
Отредактировано bunda1 (22-05-2019 21:39:55)
Отсутствует
Dumby у меня на 67 почему то не работает для custom_buttons-0.0.7.0.0.4-fx-paxmod.xpi пункт удалить кнопку, в консоли пишет TypeError: this.getElementsByAttribute is not a function, пробовал custom_buttons-0.0.7.0.0.3-fx-paxmod.xpi, то же самое. Удаляю только через about:addons во вкладке Custom Buttons. Пробовал на чистом профиле то же самое.
Так же на 67 перестал работать ваш исправленный инспектор Dom.
Добавлено 23-05-2019 09:09:46
bunda1
Ну тогда не знаю. Я проверял на Firefox64 и всё работает.
ваша кнопка и на 67 работает
И еще вопрос чем заменить (или где прочитать, все что связано с content и document ) в многопроцессорном -выражения:
gBrowser.contentDocument,
gBrowser.contentDocument.links,
document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content,
функцию выделения текста
var getSel = function (w) { var s,d = w.document; if (d.selection) { var r = d.selection.createRange(); s = r ? r.text : '' } else { s = d.getSelection().toString(); if (!s) { var e, t = d.getElementsByTagName('textarea'), u = d.getElementsByTagName('input'), i = t.length; while(e = (i > 0) ? t[--i] : u[-i--])try{ if (e.offsetHeight > 0 && (s = e.value.substring(e.selectionStart, e.selectionEnd))) break }catch(x){} } }; if (!s) for (var j = 0, f; f = w.frames[j]; j++) { try { if (s = getSel(f)) break } catch(x) {} }; return s };
Отредактировано Andrey_Krropotkin (23-05-2019 09:56:13)
Отсутствует
Andrey_Krropotkin
CB 0.0.7.0.0.3 работает в 67 . Костыли - неизвестно, bootstrap-loader.js точно нет.
Делал в ручную через omni.ja / Косяк в сборке.
Да, многопроцесс загасить надо!
Отредактировано anywho (23-05-2019 10:49:41)
Отсутствует
И еще вопрос чем заменить (или где прочитать, все что связано с content и document ) в многопроцессорном -выражения:
gBrowser.contentDocument,
gBrowser.contentDocument.links,
document.commandDispatcher.focusedWindow.top == content ? document.commandDispatcher.focusedWindow : content,
функцию выделения текста
Присоединяюсь.
Отсутствует
anywho
CB 0.0.7.0.0.3 работает в 67 . Костыли - неизвестно, bootstrap-loader.js точно нет.
Делал в ручную через omni.ja / Косяк в сборке.
Да, многопроцесс загасить надо!
Да все работает на 67 и CB 0.0.7.0.0.3 и 0.0.7.0.0.3 и костыли и многопроцесс вырублен. Есть только то что я ранее описал в посту выше, просто неудобно.
Отсутствует
anywho не пользуюсь, у меня их всего 10 и нет ни одного bootstrap аддона
Отсутствует
interskБольшинство ваших кнопок на последних версиях работать не будут, но местные умельцы их регулярно правят.Если хотите оценить, попробуйте портабельную сборку FF66 https://www.upload.ee/files/9813755/FF66.rar.htmlВсе кнопки рабочие.Автор сборки - Drage
Отредактировано Garalf (14-04-2019 11:41:20)
а на 67 можно сделать сборку, чтобы и кнопки CB работали и телеметрию со слежением вычистить? была бы отличная сборка
Отсутствует