Если Картинки не один раз повторяются, то может что-то вроде такого:
Выделить кодКод:
<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) - пишет расширение не может быть установлено, оно повреждено.
Хотелось бы конечно поставить
…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() открывали вкладку. И работали безотказно.
Теперь я кликаю букмарклет и получаю сообщение, что всплывающее окно заблокировано браузером.
Каждый раз разрешать окно это ведь не выход. Что можно сделать?