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

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

Сustom Buttons » Custom Buttons » 13-07-2023 18:32:34

Благодарю, unter_officer
:beer:

Сustom Buttons » Custom Buttons » 13-07-2023 18:00:20

Где взять версию СВ 0.0.7.0.0.26 paxmode?

Сustom Buttons » Custom Buttons » 25-04-2023 00:24:49

Dumby
Большое спасибо! :D

Сustom Buttons » Custom Buttons » 23-04-2023 21:56:28

Dumby пишет

Чем конструктор не угодил?


И что значит «не работает», не работает что?
Суть задачи не раскрыта совершенно.
Родить эвент и раздиспатчить на документе — это одно.

Вот именно что событие, созданное через конструктор, вроде и есть, но оно не делает то что хотелось бы.
Думаю это потому, что у него свойство isTrusted == false


А эта штука - nsIDOMWindowUtils.sendNativeKeyEvent() - делает все. Еще бы разобраться как прописать там модификатор, что там надо вписать вместо нуля? И что значит последняя строчка UnmodifiedCharacters?

скрытый текст
windowUtils.sendNativeKeyEvent(
    0x00000409, // aNativeKeyboardLayout, US
    0x001c000d, // aNativeKeyCode, WIN_VK_RETURN
    0,          // aModifierFlags
    "",         // aCharacters
    ""          // aUnmodifiedCharacters
);

Сustom Buttons » Custom Buttons » 22-04-2023 01:28:51

unter_officer пишет

toxa
Может как-то так:

Выделить код

Код:

addEventListener('keydown', e=> {
  if (e.keyCode == 13) {
    e.preventDefault();
    alert('Enter');
  }
});

:) Так это ж обычный слушатель события keydown. А никакая не эмуляция нажатия клавиши.

Сustom Buttons » Custom Buttons » 22-04-2023 00:13:19

mokujin
Я из той ссылки скопировал функцию dblCtrlSend и попытался вызвать ее в консоли хотя бы в том виде как она есть.
Получаю ошибку Uncaught ReferenceError: data is not defined.


Когда то работал этот код

скрытый текст
var e = document.createEvent("KeyboardEvent");
e.initKeyboardEvent(
        "keydown", // event type : keydown, keyup, keypress
         true, // bubbles
         true, // cancelable
         window, // viewArg: should be window
         false, // ctrlKeyArg
         false, // altKeyArg
         false, // shiftKeyArg
         false, // metaKeyArg
         13, // Enter
         0 // charCodeArgs
);
document.dispatchEvent(e);

Но уже давно не работает.

Сustom Buttons » Custom Buttons » 21-04-2023 22:27:41

Как эмулировать нажатие клавиш, скажем Enter?

Поддержка пользователей » Как сделать регулярку? » 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) - пишет расширение не может быть установлено, оно повреждено.

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

Board footer

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