Благодарю, unter_officer
:beer:
Где взять версию СВ 0.0.7.0.0.26 paxmode?
Dumby
Большое спасибо! :D
Чем конструктор не угодил?
И что значит «не работает», не работает что?
Суть задачи не раскрыта совершенно.
Родить эвент и раздиспатчить на документе — это одно.
Вот именно что событие, созданное через конструктор, вроде и есть, но оно не делает то что хотелось бы.
Думаю это потому, что у него свойство isTrusted == false
А эта штука - nsIDOMWindowUtils.sendNativeKeyEvent() - делает все. Еще бы разобраться как прописать там модификатор, что там надо вписать вместо нуля? И что значит последняя строчка UnmodifiedCharacters?
toxa
Может как-то так:Выделить кодКод:
addEventListener('keydown', e=> { if (e.keyCode == 13) { e.preventDefault(); alert('Enter'); } });
:) Так это ж обычный слушатель события keydown. А никакая не эмуляция нажатия клавиши.
mokujin
Я из той ссылки скопировал функцию dblCtrlSend и попытался вызвать ее в консоли хотя бы в том виде как она есть.
Получаю ошибку Uncaught ReferenceError: data is not defined.
Когда то работал этот код
Как эмулировать нажатие клавиш, скажем Enter?
Если Картинки не один раз повторяются, то может что-то вроде такого:
Выделить кодКод:
<h3 class="Uo8X3b \S{6} \S{6}">Описание<\/h3>[\sА-Яа-яёЁ.,:;-]+(?!<h3 class="Uo8X3b \S{6} \S{6}">Картинки<\/h3>)
В том то и дело, что может быть один раз, может несколько, а может и не разу.
.... ааааа, оно у тебя в одной строке всё идет, чтоле?
Это чтоле xhr = new XMLHttpRequest() и ответ разбираешь?
ДА!! :lol:
Именно XMLHttpRequest я и разбираю.
Если так, то
Спасибо! :D
Сделал, получилось. Тему можно закрывать.
это зависит как ты его собираешься использовать. мож там скобки не нужны. хз. как его спользовать буш.
Да дело не в скобках. Дело в том, что вот эта часть регулярки
Она подходит и под первую строчку, где написано Картинки. И захватит текст, начиная с этой первой строки. Что мне не годится.
А как по другому сделать, я не знаю.
Выделить кодКод:var re = new RegExp(/(\<h3 class=\WUo8X3b.*\/h3\>)/);
или просто
var re = /(\<h3 class=\WUo8X3b.*\/h3\>)/;будет запомнен в $1
Но мне надо чтобы <h3 class="Uo8X3b OFScic zsYMMe">Картинки</h3> не захватило, а <h3 class="Uo8X3b Ohucic hsRREe">Описание</h3> - захватило.
Я пытался сделать так:
Но оно захватывает вот это все целиком
<h3 class="Uo8X3b OFScic zsYMMe">Картинки</h3> ........... some text ............... <h3 class="Uo8X3b Ohucic hsRREe">Описание</h3>
С вашим кодом то же самое.
…Есть строка:
<h3 class="Uo8X3b OFScic zsYMMe">Картинки</h3> ........... some text ............... <h3 class="Uo8X3b Ohucic hsRREe">Описание</h3> ........... some text ...............
Названия классов после Uo8X3b могут быть любые, а Uo8X3b постоянный.
Мне надо регулярку, чтобы она захватила текст, начиная с <h3 class="Uo8X3b Ohucic hsRREe">Описание</h3> причем вместо Ohucic hsRREe могут быть рандомные наборы символов.
Не уверен, но можно попробовать подсунуть свой gURLBar._whereToOpen()
Работает. Большое вам спасибо!
Я переключил в about:config настройку browser.urlbar.openintab = true
Все адреса из адресной строки открываются в новых вкладках. Мне это удобно.
А можно сделать, чтобы, если я вставляю в адресную строку алиас закладки, и если эта закладка - букмарклет (код начинается с javascript:), то она открывалась бы в текущей?
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) - пишет расширение не может быть установлено, оно повреждено.
Хотелось бы конечно поставить
…