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

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 21-04-2024 16:59:07

Vitaliy V. пишет

попробуй заменить на item.addEventListener("command", cmd);

Я так переделал, и всё работает: item.onclick = cmd
Менюшка в оконном скрипте потому, что там весь основной код – перехват кликов и прочие функции.

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 20-04-2024 16:37:26

Помогите решить задачу:
Кнопка не видит функции, прописанные перед CustomizableUI.createWidget(… ?
на первой строке меню ошибка: Uncaught ReferenceError is not defined


Если убрать «var», то код работает, но мусорит переменными в окно браузера.
[spoiler=Как «пробросить» нужные функции, которых много ? (BrowserReloadEx и прочие)][code](async id => { // UserMenu

var BrowserReloadEx = (skip) =>{ // ошибка –> Uncaught ReferenceError is not defined
    if(parseInt(Services.appinfo.version) < 126)
        skip ? BrowserReloadSkipCache() : BrowserReload();
    else
        skip ? BrowserCommands.reloadSkipCache() : BrowserCommands.reload();
},
G = { v: "permissions.default.image",
    Pref(key,set){key = [key];
        var t = Services.prefs.getPrefType(key[0]), m = {b:"Bool",n:"Int",s:"String"};
        t = m[t == 128 ? "b" : t == 64 ? "n" : t == 32 ? "s" : ""];
        if (!t) t = m[set != undefined ? (typeof set)[0] : (typeof key[1])[0]];
        if (t) if (set != undefined)
            Services.prefs[`set${t}Pref`](key[0],set)
        el

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 18-04-2024 02:04:44

brake пишет

Bug 1880914

этот баг закрыт и он 2020 года.
P.S. тут вообще-то обсуждение скриптов, кнопок… Нужно отдельную тему создать для багов и особенностей версий Firefox!

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 17-04-2024 01:19:02

Vitaliy V. пишет

и каким образом оконный скрипт увидит globalThis background скрипта (если UcfPrefs.customSandbox не использовать)

globalThis[Symbol.for('UcfGlob')] = this.UcfGlob; - общие функции в scriptsbackground:
UcfGlob = Cu.getGlobalForObject(Cu)[Symbol.for("UcfGlob")]; // код оконного скрипта из scriptschrome:

Так Dumby подсказал: надо что-то в SystemGlobal добавить, чтобы с других мест вызывать.
Я пробовал делать общий объект в background скрипте через UcfPrefs.customSandbox, но не получилось:
оконный скрипт выдаёт undefined

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 16-04-2024 02:36:39

Dumby пишет

Поэтому, создавать виджет в окне, в общем случае, не рекомендуется.
……проще всего, в SystemGlobal, но там CustomizableUI надо импортировать.
Хорошо бы, конечно, в сандбоксе UCF, но в окне нет туда прямых ссылок.

Vitaliy V.
В новой версии можно проще общие объекты подключать к UCF вместо браузера?
У меня пока так: в скрипте scriptsbackground: общий объект для вызова из scriptschrome: кода

globalThis[Symbol.for('UcfGlob')] = this.UcfGlob; //общие функции


И почему CustomStylesScripts.mjs расположен отдельно? Ведь после добавления скриптов его надо править (пока не будет GUI-менеджера подключенных скриптов/стилей) 
Вообще, в ReadMe не хватает описания функций UserChromeFiles, т.е. нет авторской рекламы! :)


И если убраны файлы стилей, то хотя бы сохранить их закомментированными в stylesall: [ // For all documents
        { path: "custom_styles_all_agent.css", type: "AGENT_SHEET"},

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 12-04-2024 17:08:00

Dumby пишет

следует понимать, что если в настройку писать больше четырёх килобайт — получим Warning в консоль.

Dumby – спасибо за изменяемое пользователем меню, потестирую!


Наверное, код станет проще без диалога настройки, если объект меню хранить в опции в виде base64.
Для изменения меню создавать временный файл через atob(MyMenuSource) и править его в редакторе по-умолчанию.
Только непонятно, как отследить, что редактор сохранил и закрыл файл ??? Затем файл надо перевести в btoa(……) и запомнить новое содержимое в опции.
Т.е когда редактор по-умолчанию является многовкладочным типа SublimeText и при закрытии файла сам не закрывается…


Dumby пишет

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

java API браузеров сложна для меня, только чужие примеры переделываю. Не нашёл статей, где можно последовательно изучить API браузеров с нуля, от developer.mozilla.org толку мало.

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 08-04-2024 15:15:50

b0ttle пишет

Ну и может совет, как лучше запускать для теста другие профили?

Профили могут требовать и разные версии браузеров.
[spoiler=Ява код не нужен, проще VBS ярлык запускать в Windows:][code]Set WshShell = CreateObject("WScript.Shell")

CurrPath = CreateObject("Scripting.FileSystemObject").GetFile(WScript.ScriptFullName).ParentFolder
ProfileDir = CurrPath & "\ProfileDobrov"
ProfileUser = "C:\UserTarget\MozillaFirefox\ProfileDobrovRAM"
ProfileCD = CurrPath & "\ProfileDobrov"

RamDir = "R:\UserTarget\MozillaFirefox\ProfileDobrov"
If CreateObject("Scripting.FileSystemObject").FolderExists(RamDir) Then
    ' CurrPath = FirefoxDir
    WshShell.Run "cmd /c @echo " & chr(007), 0, false
End If

If CreateObject("Scripting.FileSystemObject").FolderExists(ProfileUser) Then
    ProfileDir = ProfileUser
End If

If CreateObject("Scripting.FileSystemObject").FolderExists(ProfileCD) Then
    ProfileDir = ProfileCD
End If

' result = WshShell.Popup(ProfileDir, 3, "FireFox", vbQuestion)
WshShell.Ru

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 07-04-2024 02:14:46

Dumby спасибо, сделал! Вот ещё хотелка для любителей ярлыков любых прог: :)


В кнопке «Меню пользователя» создавать последний пункт меню из опции, загружаемой из about:config.
т.е. для последней строки должно быть изменяемое свойство объекта, которое можно править каким либо образом.
Нужно по правому клику открыть диалог правки последней строки меню с её свойствами – т.е. данными в MenuItem{………}.
имя MenuItem не менять (для обращения из другой части кода), а имя строки меню и всё содержимое сделать изменяемым.
Если сложно, то можно не включать функционал upd() – автообновляемая строка меню с renderedOnce.
Но в идеале перед открытием меню из about:config лучше брать весь объект MyMenu, но не представляю, как это сделать…


Пригодиться многим: возможность вбить код, делающий то, что нужно юзеру. После правки строка меню должна измениться.
[spoiler=Меню пользователя - заготовка][code](a

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 06-04-2024 08:04:54

Dumby => mvd0era-FPc-I.jpg
Я переделал код, но не получается вставить второй блок текста с другим стилем.
второй текст получается сразу слитно за первым, с тем же размером шрифта и без переноса…

Выделить код

Код:

var header = wary.appendChild(document.createElement("div"));
header.append(head);
var txt = header.appendChild(new Text());

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 06-04-2024 03:11:36

Dumby – исчезающая панель не пашет в UCF scriptsbackground [System Principal] (custom_script.js) :(
но код без win. работает нормально в режиме scriptschrome: document [ChromeOnly]
[spoiler=Ошибка на строке: var header = div.appendChild(doc.createElement("div")).appendChild(new Text());][code]// ChromeUtils.domProcessChild.childID || ({…………………………
getwin(){ //self = Services.obs.addObserver(self = this, topic); //в custom_script.js
    return this.ownerGlobal || Services.wm.getMostRecentWindow("navigator:browser");
},
ask(head, run, info = "", sec = 3, x, y = 58, win = self.getwin()){ // x < 0 отсчёт смещения справа
    var doc = win.document, wary = doc.createXULElement("panel"), popupset = doc.getElementById("mainPopupSet");
    wary.setAttribute("onpopupshown", "move()"); wary.setAttribute("onpopuphidden", "this.remove()");
    var div = wary.appendChild(doc.createElement("div"));
    var header = div.appendChild(doc.createElement("div")).appendChild(new Text());
    var txt = div.append

Сustom Buttons » Custom Buttons » 02-04-2024 16:00:08

Dumby спасибо! Но перенос строки не пашет!
И желательно добавить ниже мелким шрифтом текст пояснения, например: выполнение команды «format C:»


нашёл только такой способ:

Выделить код

Код:

// var tn = box.appendChild(new Text());
const div = document.createElement("div");
var tn = box.appendChild(div);
div.insertAdjacentHTML("afterbegin", '<p>afterbegin -  В начало элемента</p>');
div.insertAdjacentHTML("beforeend", '<p>beforeend - В конец элемента</p>');

Сustom Buttons » Custom Buttons » 01-04-2024 02:14:45

Dumby придумай исчезающий диалог !
Идея такая: при опасных действиях (перезапуск браузера и т.п.) открываем диалог с текстом предупреждения или панель или подсказку.
Диалог или панель должны исчезнуть через пару секунд, не выполняя опасную команду.
Если юзер кликнул по кнопке «Да» или по форме/панели/предупреждению с текстом, то выполняем опасное действие.

Сustom Buttons » Custom Buttons » 31-03-2024 16:07:03

VORON - надо прописать скрипты в CustomStylesScripts.mjs.
В демо-профиле всё уже сделано, читайте шапку темы.

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 31-03-2024 00:14:56

Оптимизировал скрипты ucf_hookClicks SingleHTML.mjs ClickPicSave.mjs в части глобальных функций.
Клики мыши работают на кнопке "Новая вкладка" и пустой панели (Закрыть вкладки слева/справа от активной), при ошибках сохранения страниц/картинок urlbar мигает красным.
В меню пользователя (правый клик на кнопке Дополнения) «Заметки» запускает свой софт для каждой системы (для Linux не вписал, т.к. нет стандарта да и пользователей только 2%)

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 30-03-2024 01:34:57

Dumby пишет

Попробовал (на 124) воспроизвести — не получилось.

Отбой, картинка запишется в путь Загрузок по-умолчанию, если запись в другую папку не удалась, например, прав на запись не хватило.

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 29-03-2024 19:03:05

Dumby спасибо!
ещё проблемку со скриптом ClickPicSave.jsm не смог исправить…
Сохраняет только в папку Загрузки по-умолчанию, хотя в настройках выбран другой путь, который запоминается в data["browser.download.dir"].set
[spoiler=ClickPicSave.mjs][code]// by Dumby сохранить картинку колёсиком или перетащив вправо; DBL поиск похожих
export {MouseImgSaverChild, MouseImgSaverParent}; // forum.mozilla-russia.org/viewtopic.php?pid=800469#p800469

var u = {get it() {
    delete this.it;
    return this.it = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools);
}};
["E10SUtils", "PrivateBrowsingUtils"].forEach(name => Object.defineProperty(u, name, {
    configurable: true, enumerable: true, get() {
        var url = `resource://gre/modules/${name}.`;
        try {var exp = ChromeUtils.importESModule(url + "sys.mjs");}
        catch {exp = ChromeUtils.import(url + "jsm");}
        delete this[name];
        return this[name] = exp[name];
    }
}));

class MouseImgSaverChild extends JSWindowActorChild {
    handleEvent(e) { //к

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 29-03-2024 07:43:38

Vitaliy V. - спасибо! При публикации кодов иногда не хватает их краткого описания!


Вопрос: иногда файл пишется в папку с запретом записи или нет места в этой папке.
Как запустить свой код (т.е. предупреждение в лог) при ошибке записи файла?
IOUtils.writeUTF8(dir, data); //нужна проверка на ошибки записи

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 29-03-2024 04:52:22

Vitaliy V.
пресловутый вопрос про вкладки снизу в несколько строк под #nav-bar -
можно сделать вкладки снизу без скрипта, только стилем, учитывая панель меню?


В стиле aris-t2 включаю tabs_multiple_lines.css и в Linux (наверное и в винде) остаётся незакрытой панель меню, появляющаяся лишь при нажатии Alt.
Когда панель меню скрыта, на её месте остаётся пустая панель при подключенном стиле многострочные Вкладки снизу.
[spoiler=Решение для вкладок снизу от Vitaliy V. — стиль и скрипт Firefox 78+][code]@-moz-document url("chrome://browser/content/browser.xhtml") {

/* FIX aris-t2 tabs_below_navigation_toolbar_alt.css */
#main-window[tabsintitlebar][sizemode="maximized"] * #titlebar, #main-window[tabsintitlebar][sizemode="maximized"] #navigator-toolbox #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar][sizemode="maximized"] #navigator-toolbox #TabsToolbar,
#main-window[tabsintitlebar][sizemode="maximized"] #navigator-toolbox #toolbar-menubar[autohide

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 28-03-2024 15:07:01

Vitaliy V. а что делает этот скрипт?
Подключил, но при поиске из строки адреса ничего не изменилось…


Переделал под UCF 2024 коллекцию скриптов и Демо-профиль из шапки темы.
Исправил ошибки в ucf_hookClicks, ClickPicSave.mjs, SingleHTML.mjs, когда не создавались подпапки сохранения картинок.
Для Firefox версий ниже 115 предназначена папка UCF_Firefox 78+, которая и в новых Firefox пока работает.


p.s. форум часто недоступен – 504 Gateway Time-out

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 24-03-2024 00:26:21

Как заметил b0ttle, в новом профиле проблема, что стили/скрипты всегда отключены и нужно открывать опции UCF, затем сбрасывать startupCache (винда иногда глючит и нужно вручную удалять startupCache).
Удобней в UcfPrefs.mjs для совместимости с UserScripts по-умолчанию включить стили и скрипты «Для докум. окна браузера», ведь таких скриптов большинство и нужно, чтоб у начинающего юзера они сразу заработали на чистом профиле.


Vitaliy V. пишет

и ещё не понял, цитата "Проще разные CSS держать" так а что мешает это сделать? в одном файле будет @media (-moz-platform: macos) в другом linux и т.д. и в разные папки можно положить

Нужен Firefox 99+ для @media (-moz-platform:… , у меня как всегда нестандарт - на работе Астра Linux 1.6, где Firefox 84.


если избыток места по ширине, то по высоте для доп. панели как раз и хорошо сделать автоскрытие, мне например неудобно пользоваться верт. панелью

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

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 23-03-2024 13:01:57

Vitaliy V. пишет

Тестируйте обновление UCF

У меня появляющаяся дополнительная панель перекрывает и верхнюю часть страницы.
Надо-бы брать высоту дополнительной панели под #nav-bar из высоты панели вкладок.
Но хватит одной вертикальной панели, т.к. избыток места на всех мониторах щас тока по ширине.

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 22-03-2024 05:04:43

Вопрос: чем заменить Services.wm.getMostRecentWindow("navigator:browser") на что-то попроще?
Хочу вызывать функцию globalThis[Symbol…… из другого js-кода без аргументов, но выдаёт ошибку win.gBrowser is undefined, если запускать так:
Cu.getGlobalForObject(Cu)[Symbol.for("SingleHTML")]();


пробовал разные варианты, пока в SingleHTML.mjs вписал такой второй аргумент по-умолчанию:
SingleHTML(to = false, win = this.ownerGlobal || Services.wm.getMostRecentWindow("navigator:browser")) {…

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 21-03-2024 03:58:15

unter_officer - код универсальный, вы прочитали середину, но не увидели команду вызова в начале!
Добавить в любую кнопку: Cu.getGlobalForObject(Cu)[Symbol.for("SingleHTML")](true,window);


Кроме того, SingleHTML.mjs позволяет 1) сохранять страницу с выбором папки или автоматически.
2) сохранять в любые папки/подпапки, используя имя вкладки или домен. Пишем "Сайт||Фото|" в extensions.user_chrome_files.savedirs:
сохранение Html/Pics. [Загрузки]/"_Html/subdir|_Pics/subdir" «subdir: пусто | 0 имя страницы | 1 домен»
3) пути/имена страниц меняются на лету из кнопки настроек скрипта ucf_hookClicks.js или правкой extensions.user_chrome_files.savedirs.


Vitaliy V. может сможешь решить давнюю проблему скрипта SingleHTML.mjs ?


Этот код не сохраняет SVG-графику, но работает быстрее, чем дополнение SingleFile и сохраняет страницу более компактно.
https://meteo7.ru/forec

Скрипты » UCF - ваши кнопки, темы, дополнения, скрипты… » 21-03-2024 01:17:05

unter_officer на предыдущей странице SingleHTML.mjs сохраняет страницу или выделенное.

Firefox » Ищу расширение для Firefox (ищу дополнение) » 19-03-2024 12:43:59

vending_machine, vitalii201 - это всё не то.
Пока пользуюсь ImageAssistant, но это расширение только сохраняет все картинки.

Board footer

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