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

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

Скрипты » UCF - ваши кнопки, скрипты… » Вчера 09:54:00

unter_officer пишет

Надеюсь, не очень путанно описал свою хотелку.

Ну так, на четвёрочку.


Первый пункт, я так понимаю, относится и к звезде,
иначе, наверно, было бы написано «по Ctrl+D» вместо «(Ctrl+D)».


Второй пункт, видимо, относится к первому пункту, а не вообще «всегда».


Третий пункт я просто не понял. Если имеется в виду сохранение
со звёздочной панельки в состоянии «Изменить закладку», то это
не «сохранении новой аналогичной закладки», а перемещение существующей.


А если заказано чтобы звёздочная панелька в состоянии «Изменить закладку»
не появлялась, то третий пункт получается избыточен.


Однако, на всякий случай, задумал, чтобы если звезда активируется
с модификатором Ctrl или Shift, тогда поведение не меняется, остаётся каким было.


Вот, в окно браузера (не в сандбокс).
[spoiler][code](async mod => (await ChromeUtils.compileScript("data:," + encodeURIComponent(
    `Object.assign(PlacesCommandHook, {${
        String(PlacesCommandHook.bookmarkPage)
            .replace("{", `

Сustom Buttons » Custom Buttons » Вчера 09:52:41

Garalf пишет
Выделить код

Код:

Можно поправить?

А чего это «Можно поправить?» делает в коде?
Подлежит удалению.

перестала работать кнопка

Очень информативно. Хорошо, 129

скрытый текст

Выделить код

Код:

/*
        fp.init(window, PlacesUIUtils.getString("EnterExport"), fp.modeSave);
*/
        fp.init(window.browsingContext, PlacesUIUtils.promptLocalization.formatValueSync("places-bookmarks-export"), fp.modeSave);

Скрипты » userChrome.js » Вчера 09:51:35

dinn пишет

заменить readFromClipboard()

На await navigator.clipboard.read() что ли?
А в чём тут затруднение? Выражение вернёт массив,
либо пустой, либо не пустой, просто проверяем length


Другое дело, что navigator.clipboard берёт лишь немногое.
Например, в копируем файл в проводнике,
и в буфере торчит больше десятка форматов,
а await navigator.clipboard.read() отдаёт пустой массив.

Просьба посмотреть

Здесь виджет создаётся кодом, исполнившемся в окне,
и многое некоторое привязано к этому окну.
Например, PlacesToolbarItems вычисляется
как #PlacesToolbarItems того окна, в котором создан виджет.


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


Также args11, мало того, что это ненужная глобальная переменная,
типа window.args11, так при открытии нового окна, код перепишет этот args11,
и если листенер из предыдущего args11 был д

Скрипты » userChrome.js » 02-10-2024 09:53:32

dinn пишет

Или с событием 'copy' такое не прокатит

Какое «такое»? Событие "copy" наступит когда случится копирование
в этом окне, а значит в этом процессе, не в контентских процессах.
А даже если слушать и в них, то это всё равно всего лишь copy.

нужно ждать поддержки такой фишки?

Да, такая фишка была бы здесь полезна, только это настораживает:
«
    If the clipboard contents are changed outside the user agent,
    then the clipboardchange event MUST fire when the user agent regains focus.
»
Хотел попробовать записать какой-то аналог на ctypes,
но далеко не продвинулся, то ли в ctypes что-то сломано,
то ли руки кривые, но при попытке использовать функцию
(процедуру, как в осуществлении SetWindowsHookExW() или SetWindowLongA())
браузер валится с MozCrashReason: *** Compartment mismatch 0 vs. xxxxxxxx at argument 0


Ладно, если это так важно, то можно было бы и интервал подрядить на сколько не жалко.
Но как узнать что буфер обмена пуст? В смысле, какое состояние

Скрипты » UCF - ваши кнопки, скрипты… » 02-10-2024 09:50:52

xrun1 пишет

утилита для просмотра буфера обмена clipbrd.exe

О, интересная штука. Показывает даже то, чего не показывает InsideClipboard
[spoiler]
Ну в смысле скорее показывает наличие некоторых форматов, чем данные.

После применения способов 1) ... там чисто.

Ну где же чисто, когда нет
[code]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcQAAAFpCAIAAACNv894AAArJklEQVR42u2df7AV1Z3gz+VH4m8FXQTRzKZ4igKGctx9cdCsGH+watYxb4hO1kopG0tSrIqT1LDqTK2YUUPIZGYeKlPPTYVYKScjxVBWJkiJGDGujrJhXUYeCrwXjZJ5QGmMEn8h8Pbc7tvdp7tP/7g/3uk+/T6fPy6Xvt3nnL4/Pu/7Pefe/tbeeuutQ4cOHTx48LDHcAwhhHsLAABaanv37p295Z+LHgYAgN3UfvOb35y7df2egx8VPRIAAIupvfHGG93bNiBTAIB2qL3++uvnbd+ITAEA2qH2q1/9as6rP0emAADtUBscHDx/x9PIFACgHWoDAwMX7NyETAEA2qG2c+fO/zTwi2yZXnVz485PHyh6zAAApaO2Y8eOCwefTZSp59Dh4eFnnnlm7ty5zn3nyJpuf1QLAKOS2quvvjr3V/87SabD/+Xmu+9eetddd0mTyv9u2rRp6dKlae0hUwAYldReeeWVi157LkWm8qZ2992bnJjUx7eqvJXh6oUXXlhzI1VkCgCjktr27du/+PrzmTIdvusuf6OMUqVMZbgqBSrvSJm6t/XHojLdLq5aGWv1s6LvW2KK8XMd2iQWrhFnzhfL5xrvW3023

Сustom Buttons » Custom Buttons » 02-10-2024 09:49:49

manuk пишет

Где бы поделиться ссылкой

Увы, я не знаю где.


Подломали Custom Buttons.


Bug 71895 - Remove Hidden Window from Linux and Windows builds (Firefox 132+)
Bug 1917745 - Remove dom.window.sizeToContent.enabled pref (Firefox 132+)


Custom Buttons 0.0.7.0.0.34

Сustom Buttons » Custom Buttons » 28-09-2024 09:33:15

manuk пишет

Dumby, не могли бы вы посмотреть, что изменилось в воспроизведении звуков уведомлений FF131 и скрипты аддона в XPI

FF130, скорее. Какой-то очень странный баг.
Лиса козлится, пишет какую-то дичь, типа
не поддерживается, не удалось загрузить медиаресурс,
не удалось воспроизвести, нет декодеров ...


Думал, может дело в .ogg — но замена на .mp3 хорошего результата не дала.
Думал, может дело в moz-extension:// — но с консоли браузера audio играется.


Тем не менее, по протоколам data: и blob: вроде работает, поэтому,
пока не найдено лучшего решения или не исправлен баг, можно так попробовать
[spoiler=popup.js][code]/*
    playSound(sound, volume) {
        if (sound !== null && sound !== 'off') {
            let audio = new Audio()
            audio.src = sound
            audio.autoplay = true
            audio.volume = volume
        }
    }
*/
    async playSound(sound, volume) {
        if (!sound || sound == "off") return;

        var resolver = Promise.withResolvers();
        var reader = new FileReader();
        reader.onload = res

Скрипты » UCF - ваши кнопки, скрипты… » 28-09-2024 09:32:16

CoolCmd пишет

мне нужно, чтобы настройка всегда была равна false

Я попробовал в Tor Browser 13.5.5 добавить в config-prefs.js
pref("privacy.resistFingerprinting", false, locked);


и мне, как about:config, так и консоль с кода
Services.prefs.getBoolPref("privacy.resistFingerprinting");
показывают false

Скрипты » UCF - ваши кнопки, скрипты… » 25-09-2024 17:16:12

xrun1 пишет

какой способ, на твой взгляд, правильней для очистки (удаления) данных буфера обмена?

Всё ещё склоняюсь избегать обсуждения вопроса "правильности".
Скажу так: утилита InsideClipboard показывает мне, что


Способ 1) пишет в буфер два формата
CF_TEXT — один нулевой байт и CF_UNICODETEXT — два нулевых байта.


Способ 2) очищает буфер полностью.


Способ 3) пишет в буфер один формат "utiputi" — два нулевых байта,
что, для данной задачи, является избыточным.
Если убрать всё лишнее, то есть оставить только


Services.clipboard.setData(
    Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable),
    null,
    Ci.nsIClipboard.kGlobalClipboard
);
то результат будет такой же, как и у способа 2)

Скрипты » UCF - ваши кнопки, скрипты… » 25-08-2024 21:04:58

Ещё скриншот
[spoiler][code]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoIAAAHgCAIAAAC+RpuOAAC2UElEQVR42uydB1zTThvHU7aAioKKk+1WEPfA8VdxbwVRHKCioKAiLpQlihsRB4pbceBCcYNbcYu4F0NAccsQFFl9rw0NaZqkSZuy3vt9PuLlxnOXtM03z3OXhNeuXbuIiIgLz9MRcRk3rAv+8gi5xG3JDFyRtMYkbXnURdLtc98FRS94Y9LMsOxOao9k1qT3wXRnZWgj9UvB9AixFo9FLqddyGtUIVa5FJ/PvUnFm5O5C+kN+XTbLPrls27FZ1TGZ1Qfq8N4xMzt8ulHyqxHmu6YfOBMepGnCxr7fGlZ6FZi6mdCLZ22Ju5tm/AAhm/duhV2PZ5QbNxAnzl0pRJRHhyWd9zySJOy94XQcIwntTIDg8xGyWO8JcN46CrLCil27ag/g3IPyQovDk7YUu2wbMnKFJ9dMTtGEuoxwqr0XBZjYI1MBHkY9+r9q5eZ6emMWjJW9Ro1zJq3aNu6Gegr9tlrxXVh3rIpSH+Ii7sSsjHt9Utuu6jXrEVv59kNW5uDQ5b48QuhVMvCKHBITwGGHz58uPsSsW+jBnWo7LJ2c8sTcXl0PGWEF464zsK09OPGvKpMfGXhysvcknl1qd8/BYjZwBQ/jnIlVs5HaY6CAUlYD4wvY3M+0wKWtOYzrcxgAEy7pjquu3fuHz2kZ2MzY8ZHhZHevU88fub6JMcJIL1v9wHFdWE/2R6kA4cPmOnh1KVzG267uHP3yZZ1obNPngcH78PHr4RSldaGm4aKMLwniohhw/rFGC5D6JYNcTnqAmHDWvq+WPmyrDxpprspQxsmtXis9oypSs3P/X/DLr1KLZDNVUdsY5oy+LIMWzFDNRtOM/anpXnSjDoN2bLDd5Hzxx85DI8QQzXQ0/JdFeLkPBWkQ0N2Kq6LKdOngLSfVYdTV4

Скрипты » UCF - ваши кнопки, скрипты… » 25-08-2024 08:21:14

vv07 пишет

Не знаю в чем я провинился перед вами

Абсолютно ни в чём, будь уверен.
Просто просить прямую ссылку,
а сам не предоставивши не только прямой, а вообще никакой,
... ну так дела не делаются.

у меня в config.js даже нет такого

А должно бы было быть.
Для кого Виталий старался?
Вписать туда «case "r3dfox":» — всего-то и делов.


Ну, и весь набор, ясен пень, должен быть актуализирован.
startupCache можно на странице about:support очистить, если что.


Картинка

Жму на кнопке обозначеной стрелкой,
верхний тулбар переключается как и задумано.

Скрипты » UCF - ваши кнопки, скрипты… » 24-08-2024 18:39:14

vv07 пишет

(желательно прямую ссылку) … для r3dfox 129.0.2

Плохой, весьма плохой пример. Непедагогично.

рабочий user_chrome_files

[spoiler=config.js][code]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkIAAAEkCAIAAABMgMmNAAA2rUlEQVR42u2db2wcyXnmXwbwh+RDsBJW4gFGEO2fUUBKBOy1Ehgz0PrIM84nOR8WxIJwgiz2y2IoYy8QkYUQA16cjhch/iBsMAROMEnog9cGDgFPGAjnXc76sKaiVUjEjm5XCSkR0XBXQhADKy29UuwAMQLHvK6u/lPVXdVT3V0zU8N5flgsqOrq6uqamX76qa5+35HvfOc7BAAAAAwmI1//+tf73QcAAACgIEzGvvnNb/a7GxKf+cxnDh8+/PDhw47/9yrPj9CZj/vdYwAAAH3CRRn77Gc/a6Jh/P+QMQAAGGZclDG4MQAAAIa4KGNl3Nj992v/ld5867lnE23qygEAAAw01mTs/rXL735IB0+8OP25J0o2VcKNtc4tXj11Zmkq2aSuvA+s/XDkLw60+ySo3jic/t7BxsczZ/s9DIOKdz/0xR9vvPSVvYtPFdi71+O/vDLy3z5lf5z4Pekrx8+C/VVZ/fg/nepYP+68XD+Le7P/4QfL/l/1/9Xpp+f9KP6wrThoZn8ACLAjY49vNa88eu6Vp+41H3++vIwVdmOwYga0zq3cvdjpMrq8MvvsjBOq31+U4+B9nS4dWC8kY2Q4/lYQbpiYAlEkvZ7A/O04l1KvTuvpoFxbPxiKkfazje1HR98ykDFfJo93VK+48qPXP3766u8/Oif+SLP7A0CE1UnF+9esyFhRN1bKivH7QeL3fQcuBjeS/Mb58cLv/+XcTV5PuJXmt4pe/f9JL/v3tvF

Скрипты » userChrome.js » 19-08-2024 15:01:51

fuchsfan пишет

перестал работать в v129

FillHistoryMenu() теперь хочет event

скрытый текст

Выделить код

Код:

/*
      window.FillHistoryMenu(document.getElementById('backForwardMenu'));
*/
      window.FillHistoryMenu({
        preventDefault() {},
        target: document.getElementById('backForwardMenu')
      });

Скрипты » UCF - ваши кнопки, скрипты… » 18-08-2024 16:24:34

dim222 пишет

не знал что кроме web-консоли есть еще

Ctrl+Shift+J
Плюс, включить devtools.chrome.enabled
Ну, это в Firefox, а как в PaleMoon — не знаю.

Или вы имеете ввиду через расширение?

Можно и через расширение. CB, например, подойдёт.
Вобщем, код для запуска в контексте окна браузера
(и не для многопроцессного режима).

Скрипты » UCF - ваши кнопки, скрипты… » 18-08-2024 15:02:24

dim222 пишет

использую PaleMoon

Мне эту шляпу взять негде.

нажать на чебокс

У меня вот так нажалось

скрытый текст

Выделить код

Код:

content.document.getElementById("cf-turnstile")
	.firstChild.openOrClosedShadowRoot.firstChild.contentDocument
	.body.openOrClosedShadowRoot.querySelector("#content input").click();


Это с консоли браузера (не с веб-консоли).

Скрипты » UCF - ваши кнопки, скрипты… » 17-08-2024 18:36:02

Dobrov пишет

Как исправить для FF 129.0.1 ошибку dt = e.dataTransfer is null

Никак.
Это Bug 1911486 - dataTransfer is null in content process on dragend
Будет исправлено в 129.0.2

И как там исправить код internalSave

Вроде не требуется, и так нормально.
Под шестнадцать аргументов в коде учтено,
а семнадцатый аргумент был добавлен в конец, и он необязательный.

17-08-2024 18:51:18

momo2000 пишет

Скрипт обновить закладку, можно чтобы после обновления контекстное меню не закрывалось?

К парочке repBM.setAttribute(…);
добавить ещё один
repBM.setAttribute("closemenu", "none");

Скрипты » UCF - ваши кнопки, скрипты… » 13-08-2024 00:03:21

momo2000 пишет

Скрипт "Открыть изображение" стал открывать картинки сразу в 2 новых вкладках

Нет, не стал. Он всё также открывает одну вкладку.


Просто если раньше он переопределял открытие,
как бы вместо того, как это делал браузер,
то теперь браузер так не делает, и скрипт остался в одиночестве.


Bug 1898764 - Remove inline event handlers from the context menu


Иначе говоря — скрипт теперь открывает свою вкладку, а браузер свою.
Скрипт, кстати, кривоват, но, если устраивал, то можно попробовать так

скрытый текст

Выделить код

Код:

/*
  item.setAttribute('oncommand', '(' + viewMedia.toString() + ')(event);');
*/
  item.addEventListener("command", e => {
    e.stopImmediatePropagation();
    viewMedia(e);
  });

egorsemenov06 пишет

не работают пункты "Сохранить значок веб-сайта" и "Сохранить выделенный текст как txt файл"

Видимо, это [url=https://bugzilla.mozilla.org/show_bug.cgi?id=1898380

Скрипты » UCF - ваши кнопки, скрипты… » 08-08-2024 15:39:20

unter_officer пишет

lazy.PrivateBrowsingUtils is undefined

Вот, кстати, интересно, откуда этот lazy вообще берётся...


Но, может быть, что-то тупенькое прокатит?
Типа добавить
var lazy = {PrivateBrowsingUtils};


перед
var save = eval(`(function ${gContextMenu.saveMedia})`.replace(

Скрипты » UCF - ваши кнопки, скрипты… » 08-08-2024 13:10:27

unter_officer пишет

побочный эффект тот же

Ааа, наконец-то дошло о чём речь.
Просто у меня кнопка была на самой панели меню,
типа рядом-вместо, поэтому косяка видно не было.


Но, переместил кнопку на другой тулбар,
и теперь вижу как скрытая панель меню выскакивает.


Не знаю как это разрулить.
Можно попробовать совсем выключить, если вдруг подойдёт.

скрытый текст

Выделить код

Код:

/*
	addDestructor(() => {
*/
	var func = AutoHideMenubar._setActive;
	AutoHideMenubar._setActive = () => {};

	addDestructor(() => {
		AutoHideMenubar._setActive = func;


Это для CB.
А для UCF-виджета, соответственно, только одна строка
btn.ownerGlobal.AutoHideMenubar._setActive = () => {};

Скрипты » UCF - ваши кнопки, скрипты… » 08-08-2024 09:18:56

unter_officer
Да вроде то же самое.

скрытый текст

Выделить код

Код:

/*
		btn.prepend(menupopup);

		var bar = doc.getElementById("main-menubar");
		bar.querySelector("#bookmarksMenu")._placesView?.uninit();
		for(var menu of Array.from(bar.children)) {
*/
		btn.setAttribute("popup", menupopup.id = "main-menubar-popup");
		var bar = doc.getElementById("main-menubar");
		bar.append(menupopup);
		for(var menu of Array.from(bar.querySelectorAll(":scope > menu"))) {


Кстати, face-s{ad, mile}.svg выкинули больше года назад в пользу емоджей.

Сustom Buttons » Custom Buttons » 08-08-2024 09:15:14

Andrey_Krropotkin пишет

PlacesUtils.nodeIsFolder

Bug 1904909
PlacesUtils.nodeIsFolder
PlacesUtils.nodeIsFolderOrShortcut

Сustom Buttons » Custom Buttons » 06-08-2024 14:03:56

Farby пишет

для режима [firefox] search-config-v2

Совсем разблокировать search-config-v2 ?
Ужаснись тогда что получится.
Только бэкап сначала сделать не забудь.
[spoiler][code]async cso => {

    var defaultEngine = "vatera";
    var order = ["rakuten", "google", "bing", "eudict", "readmoo", "ddg",];

    var chrome = [], push = (url, mime, src, rep) => {
        var code = Cu.readUTF8URI(Services.io.newURI(url)).replace(src, rep);
        var newURL = `data:${mime};charset=utf-8,` + encodeURIComponent(code);
        chrome.push(["override", url, newURL]);
    }
    push(cso, "application/json", /https(?!\?)/g, "$&?");
    push(
        "chrome://browser/content/parent/ext-search.js", "application/x-javascript",
        "await Services.search.getVisibleEngines()", "($&).filter(e => !e._metaData?.hideOneOffButton)"
    );
    var uri = Services.io.getProtocolHandler("resource")
        .QueryInterface(Ci.nsIResProtocolHandler).getSubstitution("");
    var ams = Cc["@mozilla.org/addons/addon-manager-startup;1"].getService(Ci.amIAddon

Скрипты » UCF - ваши кнопки, скрипты… » 17-07-2024 08:13:06

xrun1 пишет

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

Попытка такого приближения была, где-то здесь.
Не думаю, что смогу сделать что-то сложнее.
И, эта жуть на ctypes, соответственно, только Windows.


Ну, там чуть причесать надо, и на ESM перевести.
Надеюсь, труда не составит.


или about:processes?

К странице about:processes приближать не требуется.
Оно должно с ней просто совпадать.
Типа сумма значений в колонке «Память».


Если с ChromeUtils.requestProcInfo()
нужно только значение родительского процесса,
(как, предположительно, акцентировано на скриншоте красным овальчиком справа),
то можно закомментировать строку
for(var child of info.children) bytes += child.memory;

Скрипты » UCF - ваши кнопки, скрипты… » 09-07-2024 00:09:02

egorsemenov06 пишет

ошибка missing ) after argument list ucf-contextsearch.js:80

Чтобы использовать в функции оператор await
нужно сделать её асинхронной (дописать async).

скрытый текст

Выделить код

Код:

/*
    setAttrs(node, engine, label = engine.name) {
*/
    async setAttrs(node, engine, label = engine.name) {

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 05-07-2024 21:45:49

6e73epo пишет

В свое время на этом и погорел, машинально поставив кавычки, и долго ломал голову откуда взялся capturing
...addEventListener("event", func, "false"); // "false" = true (не пустая строка)

"false" == true (не пустая строка)


Описываемый тобой опыт, несомненно, интересен и поучителен,
но я же не об этом.


Вот запусти с консоли прямо так: addEventListener();
Какое число выдаст тебе консоль? Может восемь? Нет?
Ну вот, я, собственно, только об этом.

05-07-2024 22:09:30

Dumby пишет

"false" == true

Опаньки, с кода "false" == true; консоль выдала мне false
Это слегка неожиданно.

"false" == false; — тоже false
С кода if ("false") alert(); — алерт есть.

Board footer

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