Полезная информация

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

Поддержка пользователей » Как сделать регулярку? » 17-06-2021 17:56:51

negodnik пишет

Если Картинки не один раз повторяются, то может что-то вроде такого:

Выделить код

Код:

<h3 class="Uo8X3b \S{6} \S{6}">Описание<\/h3>[\sА-Яа-яёЁ.,:;-]+(?!<h3 class="Uo8X3b \S{6} \S{6}">Картинки<\/h3>)

В том то и дело, что может быть один раз, может несколько, а может и не разу.


mokujin пишет

.... ааааа, оно у тебя в одной строке всё идет, чтоле?

Это чтоле  xhr = new XMLHttpRequest()  и ответ разбираешь?

ДА!! :lol:
Именно XMLHttpRequest я и разбираю.

Если так, то

Выделить код

Код:

var re = new RegExp(/.*(<h3 class=\WUo8X3b.*Описание.+?\/h3>).*/i);

Спасибо! :D
Сделал, получилось. Тему можно закрывать.

Поддержка пользователей » Как сделать регулярку? » 16-06-2021 00:30:00

mokujin пишет

это зависит как ты его собираешься использовать. мож там скобки не нужны. хз. как его спользовать буш.

Выделить код

Код:

var re = new RegExp(/(\<h3 class=\WUo8X3b.*Описание.*?\/h3\>)/i);

Да дело не  в скобках. Дело в том, что вот эта часть регулярки

Выделить код

Код:

<h3 class=\WUo8X3b.*

Она подходит и под  первую строчку, где написано Картинки. И захватит текст, начиная с этой первой строки. Что мне не годится.
А как по другому сделать, я не знаю.

Поддержка пользователей » Как сделать регулярку? » 15-06-2021 21:40:58

mokujin пишет

Выделить кодКод: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> - захватило.


Я пытался сделать так:

Выделить код

Код:

var re = /(<h3 class=\"Uo8X3b.*?>Описание<\/h3>)/

Но оно захватывает вот это все целиком

Выделить код

Код:

<h3 class="Uo8X3b OFScic zsYMMe">Картинки</h3>
........... some text ...............
<h3 class="Uo8X3b Ohucic hsRREe">Описание</h3>

С вашим кодом то же самое.

Поддержка пользователей » Как сделать регулярку? » 15-06-2021 19:09:31

Есть строка:


Выделить код

Код:

<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 могут быть рандомные наборы символов.

Сustom Buttons » Custom Buttons » 03-06-2021 23:56:07

Dumby пишет

Не уверен, но можно попробовать подсунуть свой gURLBar._whereToOpen()

Работает. Большое вам спасибо!

Сustom Buttons » Custom Buttons » 02-06-2021 13:42:31

Я переключил в about:config настройку browser.urlbar.openintab = true
Все адреса из адресной строки открываются в новых вкладках. Мне это удобно.

А можно сделать, чтобы, если я вставляю в адресную строку  алиас закладки, и если эта закладка - букмарклет (код начинается с javascript:), то она открывалась бы в текущей?

Сustom Buttons » Custom Buttons » 07-04-2021 00:39:53

Dumby пишет
toxa пишет

Если после инициализации я открою кнопку подредактировать, а потом закрою, то листнер дублируется. Помогает только перезапуск браузера.
Можно как то сделать, чтоб если листнер уже есть, новый не добавлялся?

Ну флаг можно поставить куда-нибудь,
в окно или иное подобное надёжное место.
Если флаг есть, то не добавляем листенер, иначе добавляем.

А как поставить флаг в окно? И какие есть еще места, куда можно поставить флаг?

Сustom Buttons » Custom Buttons » 05-04-2021 14:38:23

В кнопке в инициализации есть строчка

Выделить код

Код:

gBrowser.addEventListener('mousedown', function(){....})

Если после инициализации я открою кнопку подредактировать, а потом закрою, то листнер дублируется. Помогает только перезапуск браузера.


Можно как то сделать, чтоб если листнер уже есть, новый не добавлялся?


Заодно хочу спросить. Вот эта строчка

Выделить код

Код:

const x = (await (await fetch(url)).text());

в консоли работает нормально. А в кнопке дает ошибку. Или если написать это в редакторе кода, скажем, АСЕ - тоже пишет ошибку. Что там ему не нравится?

Сustom Buttons » Custom Buttons » 28-02-2021 03:04:30

Dumby
Да, это оказывается из за расширения было.

Сustom Buttons » Custom Buttons » 27-02-2021 19:10:45

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

Сustom Buttons » Custom Buttons » 26-02-2021 13:43:01

xrun1 пишет

toxa
Винда никаким боком не связана с CB. Может, браузер обновился? Если да и до обновления был патченный omni.ja, надо снова патчить. Достаточно одной таблэтки
omni.ja --> modules --> AppConstants.jsm

Выделить код

Код:

MOZ_REQUIRE_SIGNING:
//@line 280 "$SRCDIR/toolkit/modules/AppConstants.jsm"
  false,

И проверить в about:config
xpinstall.signatures.required - false
extensions.experiments.enabled - true
И не забыть очистить потом startupCache

Ну по логике конечно Винда не связана с CB. Но оно как то получилось, что при установке обновлений система несколько раз перезагружалась. Браузер при этом не обновлялся. И вот после этих пертурбаций и слетело CB. После, конечно, не значит вследствие. Но осадочек то остался...

Короче пропатчил я omni.ja, сделал все как написано. СВ установилось.
Спасибо большое за помощь!

Сustom Buttons » Custom Buttons » 25-02-2021 23:33:43

Ну как быть, какие варианты по восстановлению СВ?  Ведь с  таким трудом установил, а теперь браузер отключил его и тот же вариант уже не срабатывает. Дополнение не проверено и хоть тресни.

Сustom Buttons » Custom Buttons » 25-02-2021 21:21:43

Граждане, у меня скверная новость. Вчера моя Windows 10 скачала и установила какие то накопительные обновления и после этого слетела Сustom Buttons. Пишет: дополнение не может быть проверено, поэтому оно было отключено.


Я неделю назад с трудом установил paxmode. Сейчас удалил расширение и попробовал установить заново. Устанавливаться оно отказывается, потому что не проверено. Чистка папки startupCache не помогает. Что делать?

Сustom Buttons » Custom Buttons » 24-02-2021 00:10:12

А вот этот код, копирующий адрес табов, можно приспособить под современные реалии?
[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

Сustom Buttons » Custom Buttons » 13-02-2021 21:26:49

xrun1
Вот в этом startupCache и было дело! После его очистки paxmod сразу установился (в omni.ja уже было раньше подправлено). А в каких случаях его надо чистить?

Ну и сразу вопрос: где бы взять кнопку Restart? Та, что в Готовых кнопках не работает.

Сustom Buttons » Custom Buttons » 13-02-2021 19:03:57

psihkakihmalo пишет

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].

Сustom Buttons » Custom Buttons » 13-02-2021 17:33:53

У меня тоже не ставится ни одним из описанных способов.

В том числе и после создания файлов config.js и config-prefs.js версия bootstrap всё равно якобы "повреждена".

А paxmod упорно "не проверено".

Ну наделали разрабы делов. Хорошее было расширение и вот на тебе...

Сustom Buttons » Custom Buttons » 13-02-2021 14:08:05

xrun1 пишет

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) - пишет расширение не может быть установлено, оно повреждено.

Хотелось бы конечно поставить

Сustom Buttons » Custom Buttons » 12-02-2021 18:57:55

vending_machine пишет
toxa пишет

Разобрался. Нужно обращаться к window.top.document

Какую версию СВ можете мне посоветовать для [firefox] 85 чтоб установить ее без танцев с бубном?
И где ее взять?

https://forum.mozilla-russia.org/viewto … 53#p787753

А в чём отличие paxmod.xpi и bootstrap.xpi, какая лучше?
И где можно взять готовые кнопки, или хотя бы сниппеты?  Как я понимаю, кнопки из раздела Готовые кнопки для Custom Buttons уже работать не будут, там последнее обновление было в 2017 г.

Сustom Buttons » Custom Buttons » 12-02-2021 15:21:27

Разобрался. Нужно обращаться к window.top.document

Какую версию СВ можете мне посоветовать для [firefox] 85 чтоб установить ее без танцев с бубном?
И где ее взять?

Сustom Buttons » Custom Buttons » 11-02-2021 20:56:12

У меня был код, который создавал картинку - копию картинки под курсором и размещал её в центре экрана.
В Quantume это работает нормально. Но если картинка под курсором была в iframe, то и копия ее получается там же в iframe, а не в центре экрана. В старом движке я прикреплял копию с помощью content.document.body.append(). А  на Quantume делаю document.body.append(). А как обратиться к документу именно основного окна, а не к фрейму?

Поддержка пользователей » Закладки открывающие новую вкладку через js блокируются » 08-02-2021 13:43:38

zzzephire пишет

toxa
Код отработает, а window.open() - нет. Опять же я написал по какой причине не выполнится window.open() а по какой выполнится

Ну это понятно, значит этот вариант с отдельной страницей не очень мне подходит.
Просто до сих пор я сидел на Gecko-вской версии ФФ. Там и блокировка попапов была включена и window.open() в букмарклете работало.

В любом случае спасибо за помощь.

Поддержка пользователей » Закладки открывающие новую вкладку через js блокируются » 07-02-2021 23:06:26

zzzephire пишет

Как вариант: оставить блокировку всплывающих окон и создать локальную страницу и прописать там код из букмарклетов. Саму страницу можно для удобства использовать вместо домашней странички.

Но ведь код из букмарклетов должен выполняться на текущей странице. Я имею в виду что кроме  window.open() в букмарклете может быть и ещё код и он должен отработать на текущей странице.

Поддержка пользователей » Закладки открывающие новую вкладку через js блокируются » 07-02-2021 00:14:25

zzzephire пишет

Снимите галочку в настройках

А не сделает ли это возможным открывание всяких злонамеренных попапов?
Я хотел бы, чтоб открывались только те окна, что я сам открываю.

Поддержка пользователей » Закладки открывающие новую вкладку через js блокируются » 06-02-2021 22:35:58

Я обновился с 56 версии на 85.
У меня были букмарклеты, которые через window.open() открывали вкладку. И работали безотказно.
Теперь я кликаю букмарклет и получаю сообщение, что всплывающее окно заблокировано браузером.
Каждый раз разрешать окно это ведь не выход. Что можно сделать?

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]