toxa пишетЕсли после инициализации я открою кнопку подредактировать, а потом закрою, то листнер дублируется. Помогает только перезапуск браузера.
Можно как то сделать, чтоб если листнер уже есть, новый не добавлялся?Ну флаг можно поставить куда-нибудь,
в окно или иное подобное надёжное место.
Если флаг есть, то не добавляем листенер, иначе добавляем.
А как поставить флаг в окно? И какие есть еще места, куда можно поставить флаг?
В кнопке в инициализации есть строчка
Если после инициализации я открою кнопку подредактировать, а потом закрою, то листнер дублируется. Помогает только перезапуск браузера.
Можно как то сделать, чтоб если листнер уже есть, новый не добавлялся?
Заодно хочу спросить. Вот эта строчка
в консоли работает нормально. А в кнопке дает ошибку. Или если написать это в редакторе кода, скажем, АСЕ - тоже пишет ошибку. Что там ему не нравится?
…Dumby
Да, это оказывается из за расширения было.
toxa пишеткод, копирующий адрес табов, можно приспособить под современные реалии?
Никакой адрес табов код не копирует.
Код добавляет в контекстное меню табов свои пункты, вернее, добавлял бы,
если бы в бесполезной функции htmlEscape не было бы синтаксической ошибки.
Если есть сомнение, возможно ли в «современных реалиях» добавление,
тогда пишем что-нибудь, и смотрим, добавляется или нет.
[spoiler][code](popup => {
var prfx = `cb${_id.slice(20)}-tabCopy-`;
var menuitem = popup.appendChild(document.createXULElement("menuitem"));
menuitem.id = prfx + "url";
addDestructor(() => popup.querySelectorAll(`[id^="${prfx}"]`)
.forEach(n => n.remove())
);
menuitem.render = () => {
var node = document.createXULElement("menuseparator");
node.id = prfx + "sep";
menuitem.before(node);menuitem.setAttribute("oncommand", "tcopy(this.id)");
node = menuitem.cloneNode(false);
node.id = prfx + "bbc";
node.setAttribute("label", "2");
menuitem.after(node);m
…
toxa
Винда никаким боком не связана с CB. Может, браузер обновился? Если да и до обновления был патченный omni.ja, надо снова патчить. Достаточно одной таблэтки
omni.ja --> modules --> AppConstants.jsmИ проверить в about:config
xpinstall.signatures.required - false
extensions.experiments.enabled - true
И не забыть очистить потом startupCache
Ну по логике конечно Винда не связана с CB. Но оно как то получилось, что при установке обновлений система несколько раз перезагружалась. Браузер при этом не обновлялся. И вот после этих пертурбаций и слетело CB. После, конечно, не значит вследствие. Но осадочек то остался...
Короче пропатчил я omni.ja, сделал все как написано. СВ установилось.
Спасибо большое за помощь!
Ну как быть, какие варианты по восстановлению СВ? Ведь с таким трудом установил, а теперь браузер отключил его и тот же вариант уже не срабатывает. Дополнение не проверено и хоть тресни.
Граждане, у меня скверная новость. Вчера моя Windows 10 скачала и установила какие то накопительные обновления и после этого слетела Сustom Buttons. Пишет: дополнение не может быть проверено, поэтому оно было отключено.
Я неделю назад с трудом установил paxmode. Сейчас удалил расширение и попробовал установить заново. Устанавливаться оно отказывается, потому что не проверено. Чистка папки startupCache не помогает. Что делать?
А вот этот код, копирующий адрес табов, можно приспособить под современные реалии?
[spoiler][code](function() {
// выходим, если функция уже выполнялась
if (document.getElementById("copyTabInfo")) return;
var htmlEscape = function(s) {
s = s.replace(/&/g, "&");
s = s.replace(/>/g, ">");
s = s.replace(/</g, "<");
s = s.replace(/"/g, """);
return s;
};
var copyTabInfo = function (event) {
var tab = document.popupNode;
var url = gBrowser.getBrowserForTab(tab).contentWindow.location.href;
Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper).copyString(url);
};
var copyTabBBC = function (aAsBBC) {
var tab = document.popupNode;
var title = tab.label;
var url = gBrowser.getBrowserForTab(tab).contentWindow.location.href;
var txt = aAsBBC ?
'' + htmlEscape(title) + '' :
t
xrun1
Вот в этом startupCache и было дело! После его очистки paxmod сразу установился (в omni.ja уже было раньше подправлено). А в каких случаях его надо чистить?
Ну и сразу вопрос: где бы взять кнопку Restart? Та, что в Готовых кнопках не работает.
vending_machine спасибо, изменил .js-ки как в том посте - установилось... и приятный бонус, что автоматом подхватились все мои кнопки со старого ноута, которые я вместе с профилем перенес на новый
Если я правильно понимаю, речь об этом посте https://forum.mozilla-russia.org/viewtopic.php?id=70326 ?
Какие именно версии .js-ок?
Я взял оттуда для config.js
Для версии 60 и выше:
[spoiler]//
try {(code => {
var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
var jsval, evl = true, re = e => Cu.reportError(e), imp = name => {try {
return Cu.import(`resource://gre/modules/addons/${name}.jsm`, {});
} catch(ex) {}}
if ((jsval = imp("AddonSettings"))) {
jsval.AddonSettings = {ADDON_SIGNING: false, REQUIRE_SIGNING: false, ALLOW_LEGACY_EXTENSIONS: true};
try {evl = jsval.eval("this") === jsval;} catch(ex) {evl = false;}
}
var jsvals = ["XPIProvider", "XPIInstall"].map(imp).filter(i => i);
jsvals[0].
У меня тоже не ставится ни одним из описанных способов.
В том числе и после создания файлов config.js и config-prefs.js версия bootstrap всё равно якобы "повреждена".
А paxmod упорно "не проверено".
Ну наделали разрабы делов. Хорошее было расширение и вот на тебе...
toxa
psihkakihmalo
Для установки bootstrap.xpi нужен файл config.js в папке, где лежит firefox.exe. Например, здесь c:\Program Files\Mozilla Firefox\
Код здесь
Ещё нужен файл c:\Program Files\Mozilla Firefox\defaults\pref\config-prefs.jsВыделить кодКод:
pref("general.config.obscure_value", 0); pref("general.config.filename", "config.js");paxmod.xpi может встать и так (сам не проверял), если предварительно в about:config сделаны настройки
xpinstall.signatures.required - false
extensions.experiments.enabled - true
В остальном разницы нет.
Хочу сразу уточнить, у меня Firefox Portable 85.1
В about:config я все переключил как надо. Пытаюсь установить paxmod.xpi мне пишет расширение не может быть установлено, оно не проверено.
На всякий случай попробовал bootstrap.xpi (без создания доп. js) - пишет расширение не может быть установлено, оно повреждено.
Хотелось бы конечно поставить
…toxa пишетРазобрался. Нужно обращаться к window.top.document
Какую версию СВ можете мне посоветовать для [firefox] 85 чтоб установить ее без танцев с бубном?
И где ее взять?
А в чём отличие paxmod.xpi и bootstrap.xpi, какая лучше?
И где можно взять готовые кнопки, или хотя бы сниппеты? Как я понимаю, кнопки из раздела Готовые кнопки для Custom Buttons уже работать не будут, там последнее обновление было в 2017 г.
Разобрался. Нужно обращаться к window.top.document
Какую версию СВ можете мне посоветовать для [firefox] 85 чтоб установить ее без танцев с бубном?
И где ее взять?
У меня был код, который создавал картинку - копию картинки под курсором и размещал её в центре экрана.
В Quantume это работает нормально. Но если картинка под курсором была в iframe, то и копия ее получается там же в iframe, а не в центре экрана. В старом движке я прикреплял копию с помощью content.document.body.append(). А на Quantume делаю document.body.append(). А как обратиться к документу именно основного окна, а не к фрейму?
toxa
Код отработает, а window.open() - нет. Опять же я написал по какой причине не выполнится window.open() а по какой выполнится
Ну это понятно, значит этот вариант с отдельной страницей не очень мне подходит.
Просто до сих пор я сидел на Gecko-вской версии ФФ. Там и блокировка попапов была включена и window.open() в букмарклете работало.
В любом случае спасибо за помощь.
Как вариант: оставить блокировку всплывающих окон и создать локальную страницу и прописать там код из букмарклетов. Саму страницу можно для удобства использовать вместо домашней странички.
Но ведь код из букмарклетов должен выполняться на текущей странице. Я имею в виду что кроме window.open() в букмарклете может быть и ещё код и он должен отработать на текущей странице.
Снимите галочку в настройках
А не сделает ли это возможным открывание всяких злонамеренных попапов?
Я хотел бы, чтоб открывались только те окна, что я сам открываю.
Я обновился с 56 версии на 85.
У меня были букмарклеты, которые через window.open() открывали вкладку. И работали безотказно.
Теперь я кликаю букмарклет и получаю сообщение, что всплывающее окно заблокировано браузером.
Каждый раз разрешать окно это ведь не выход. Что можно сделать?
Infocatcher
Спасибо за код!
Как-то получается, что я целиком ваш код вижу только при цитировании. А при обычном просмотре только несколько первых строчек.
Как можно написать объявление функций в секции Код или Справка или Помощь, а вызывать эти функции в Инициализации?
Просто чтобы не загромождать секцию Инициализация кодом.
delete
toxa пишетКак можно изменить надпись о количестве совпадений на Findbar-е?
Скажем вместо 30-е из 50 совпадений я хочу чтоб показывало просто 30/50Попробуйте эту... https://forum.mozilla-russia.org/viewto … 50#p759450
Я раньше пользовался той кнопкой. В основном потому что с ней показывало кол-во совпадений. Но сейчас и родной Findbar это умеет. Родной меня устраивает, только я хотел бы, чтобы надпись о количестве совпадений покороче была.
Я могу получить этот label который показывает результат. И с помощью replace сделать в нем текст как мне надо, но ведь с каждым поиском текст меняется. И как отследить это я не знаю.
Как можно изменить надпись о количестве совпадений на Findbar-е?
Скажем вместо 30-е из 50 совпадений я хочу чтоб показывало просто 30/50
Можно это сделать?
Подскажите, пожалуйста.
Вот я открываю новое окно из дополнения (Custom Buttons или любое другое) с помощью
Получается нормальное окно и все в нем работает. Я могу любую ссылку открыть в новой вкладке.
Но если я пробую открыть окошко с параметрами
то в этом окошке новую вкладку создать невозможно. Если в контекстном меню ссылки выбрать "Открыть в новой вкладке", то вкладка открывается в родительском окне. Почему нельзя открыть новую вкладку?
Хочу уточнить что у меня ФФ 56
…