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

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

№1265119-06-2018 16:25:41

Duche
Участник
 
Группа: Members
Зарегистрирован: 07-02-2016
Сообщений: 208
UA: Firefox 38.0

Re: Custom Buttons

Добрый день. Вопрос из ветки "CSS-стили" , так как там нет ответа , может специалисты из этой ветки помогут. Возможно решить задачу? Установил код "прокрутка "панели закладок" ,работает, но есть  нюанс. Прокрутка "панели закладок" происходит не по горизонтали как рулетка , а вертикально как барабан. Необходимо что бы прокрутка была как рулетка при переполнении "панели закладок", по типу прокрутки колёсиком мыши "панели вкладок"  . Заранее спасибо

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

Выделить код

Код:

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

#navigator-toolbox > toolbar:not(#toolbar-menubar):not(#TabsToolbar):not(#nav-bar):not(#addon-bar) { max-height: none !important; }
toolbar > #personal-bookmarks { display: block !important; line-height: 0px !important; }

toolbar > #personal-bookmarks > #PlacesToolbar
{
  display: block !important;
  min-height: 0px !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  max-height: 26px !important; /* Максимальная высота закладок*/
}

toolbar > #personal-bookmarks > #PlacesToolbar > hbox
{
  display: -moz-stack;
  margin-left: 0px;
  margin-right: 0px;
  width: 100%;
}

toolbar > #personal-bookmarks > #PlacesToolbar #PlacesToolbarItems { overflow-x: visible !important; overflow-y: visible !important; }
toolbar > #personal-bookmarks > #PlacesToolbar #PlacesToolbarItems > box { display: block !important; }
toolbar > #personal-bookmarks > #PlacesToolbar .chevron { display: none !important; }
toolbar > #personal-bookmarks > #PlacesToolbar > hbox > hbox { overflow-x: hidden; overflow-y: hidden; }
toolbar > #personal-bookmarks > #PlacesToolbar #PlacesToolbarDropIndicator { height: 12px !important; }
toolbar > #personal-bookmarks > #PlacesToolbar #PlacesToolbarDropIndicator[collapsed="true"] { display: none; }

toolbar > #personal-bookmarks > #PlacesToolbar toolbarbutton.bookmark-item
{
  padding-top: 3px !important;
  padding-bottom: 2px !important;
  padding-left: 3px !important;
  padding-right: 3px !important;
  visibility: visible !important;
}

toolbar > #personal-bookmarks > #PlacesToolbar toolbarseparator
{
  -moz-appearance: none !important;
  display: inline;
  text-shadow: none !important;
  position: relative;
  top: 4px;
  vertical-align: text-top;
}

toolbar > #personal-bookmarks > #PlacesToolbar toolbarbutton.bookmark-item[dragover][open] { -moz-appearance: toolbarbutton; }

Отредактировано Duche (21-06-2018 08:05:36)

Отсутствует

 

№1265221-06-2018 08:16:03

muxtair
Участник
 
Группа: Members
Зарегистрирован: 21-05-2018
Сообщений: 26
UA: Firefox 59.0

Re: Custom Buttons

bunda1 пишет

oleg.sghВыделить кодКод:// Открывать любую новую вкладку справа от текущей, от 25.11.2015. ................................
addEventListener("TabOpen", (e)=> {
   var newTab = e.target,
       tabpos = gBrowser.selectedTab._tPos,
       err = new Error().stack;

   // если восстановление сессии или открыть всё во вкладках из папки закладок
   if ( /ssi_restore|openContainer/.test(err) ) return; 

   /undoCloseTab/.test(err)
   ? setTimeout(()=> gBrowser.moveTabTo(newTab, tabpos + 1), 50) // если восстановление вкладки
   : gBrowser.moveTabTo(newTab, tabpos + 1);

}, false, gBrowser.tabContainer );
                    Отредактировано bunda1 (26-11-2015 01:23:51)

подскажите как это добавить в Firefox?
не получается даже добавить Сustom Buttons в Firefox, пишет не для этой версии. :(
может руки кривые !

Отредактировано muxtair (21-06-2018 08:16:42)

Отсутствует

 

№1265321-06-2018 11:48:56

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 220
UA: Firefox 60.0

Re: Custom Buttons

muxtair пишет
bunda1 пишет

// Открывать любую новую вкладку справа от текущей, от 25.11.2015. ................................
addEventListener("TabOpen", (e)=> {
   var newTab = e.target,
       tabpos = gBrowser.selectedTab._tPos,
       err = new Error().stack;

   // если восстановление сессии или открыть всё во вкладках из папки закладок
   if ( /ssi_restore|openContainer/.test(err) ) return; 

   /undoCloseTab/.test(err)
   ? setTimeout(()=> gBrowser.moveTabTo(newTab, tabpos + 1), 50) // если восстановление вкладки
   : gBrowser.moveTabTo(newTab, tabpos + 1);

}, false, gBrowser.tabContainer );

подскажите как это добавить в Firefox?
не получается даже добавить Сustom Buttons в Firefox, пишет не для этой версии. :(
может руки кривые !

Этот код нужно добавить в - C:\Firefox\profile!!!!!!\chrome\userChrome.css...
Надеюсь в путях понимайте? в файл - userChrome.css, в профиле - Firefox.
Смотря какая у вас портабельная или нет, если установочная то другой путь...

Отредактировано func4ptch4 (21-06-2018 11:50:35)

Отсутствует

 

№1265421-06-2018 14:08:00

Viatcheslav
Участник
 
Группа: Members
Откуда: г. Бобруйск, Беларусь
Зарегистрирован: 23-11-2016
Сообщений: 323
UA: Firefox 57.0

Re: Custom Buttons

func4ptch4 пишет

Этот код нужно добавить в - C:\Firefox\profile!!!!!!\chrome\userChrome.css...

Не вводите товарищей в заблуждение :dumb:

muxtair, для начала нужно установить расширение Custom Buttons. Описание добавления новых кнопок есть здеся - https://forum.mozilla-russia.org/viewto … 91#p397691

Отсутствует

 

№1265521-06-2018 14:36:46

muxtair
Участник
 
Группа: Members
Зарегистрирован: 21-05-2018
Сообщений: 26
UA: Firefox 59.0

Re: Custom Buttons

Viatcheslav пишет
func4ptch4 пишет

Этот код нужно добавить в - C:\Firefox\profile!!!!!!\chrome\userChrome.css...

Не вводите товарищей в заблуждение :dumb:

muxtair, для начала нужно установить расширение Custom Buttons. Описание добавления новых кнопок есть здеся - https://forum.mozilla-russia.org/viewto … 91#p397691

не могу поставить Custom Buttons, делал по инструкции.

скрытый текст
Важно!
На Firefox51 и выше последняя версия Custom Buttons :: Add-ons for Firefox не работает, но можно сделать это Как отключить проверку цифровых подписей в дополнениях Firefox и установить исправлений https://yadi.sk/d/ospDu9Wp3KKoBA
Или можно удалить или отключить установленый Custom Buttons и установить от сюда подписаную версию Custom Buttons: Custom Buttons • View topic - [Signed fixed extension attached] CB broken on Firefox 48+ или от сюда: custom_buttons-0.0.5.8.9-fixed5-signed.xpi или от сюда: 19-09-2017 13:46:15

Пишет не для этой версии. Все ссылки перепробовал.

Отредактировано muxtair (21-06-2018 14:38:05)

Отсутствует

 

№1265621-06-2018 15:11:43

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 596
UA: Firefox 47.0

Re: Custom Buttons

muxtair
Попробуйте версию конфигурационного кода отсюда: https://forum.mozilla-russia.org/viewto … 90#p757890
А Custom Buttons отсюда: https://forum.mozilla-russia.org/viewto … 96#p755496


«The Truth Is Out There»

Отсутствует

 

№1265721-06-2018 15:20:08

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 220
UA: Firefox 60.0

Re: Custom Buttons

muxtair, А точно нужен CustomButtons, можете скачать мою сборку там настроено.
Ссылку кидал на прошлой странице.

Отсутствует

 

№1265821-06-2018 15:34:20

muxtair
Участник
 
Группа: Members
Зарегистрирован: 21-05-2018
Сообщений: 26
UA: Firefox 59.0

Re: Custom Buttons

unter_officer пишет

muxtair
Попробуйте версию конфигурационного кода отсюда: https://forum.mozilla-russia.org/viewto … 90#p757890
А Custom Buttons отсюда: https://forum.mozilla-russia.org/viewto … 96#p755496

518c67657643.png

Добавлено 21-06-2018 15:38:44

func4ptch4 пишет

muxtair, А точно нужен CustomButtons, можете скачать мою сборку там настроено.
Ссылку кидал на прошлой странице.

скачал Вашу сборку, так же открывается новая вкладка в конце. Мне нужно за текущей.

Отредактировано muxtair (21-06-2018 15:38:44)

Отсутствует

 

№1265921-06-2018 16:57:57

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 596
UA: Firefox 47.0

Re: Custom Buttons

muxtair
Проверьте ещё в about:config параметры:
extensions.legacy.enabled - true
xpinstall.signatures.required - false


«The Truth Is Out There»

Отсутствует

 

№1266021-06-2018 17:33:01

func4ptch4
Участник
 
Группа: Members
Зарегистрирован: 03-05-2018
Сообщений: 220
UA: Firefox 60.0

Re: Custom Buttons

muxtair, Теперь создайте кнопку и в инициализацию кладете свой код, который вам дали... я под вас спецом перезаливать не собираюсь.
Там установлен CB, что там проверять? просто если элементарное не знать трудно, даже не знаю как обьяснить уже.

Отсутствует

 

№1266122-06-2018 09:45:50

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 60.0

Re: Custom Buttons

В 61 СВ не придумали?

Отсутствует

 

№1266222-06-2018 16:47:21

Garalf
Участник
 
Группа: Members
Зарегистрирован: 19-09-2017
Сообщений: 316
UA: Firefox 61.0

Re: Custom Buttons

У меня эти костыли работают http://my-files.ru/gd63tb

Отредактировано Garalf (22-06-2018 16:55:23)

Отсутствует

 

№1266322-06-2018 16:58:36

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 60.0

Re: Custom Buttons

Garalf
Так работает CB ?
Костыли мне до фени.Там сама CB подрихтована и встала без проблем. Есть минус в этой 61 у cento8 брал. Пропускает youtube в хранилище, при выкл. storage...
Это где-то в media зарыто....
Исправил, толку....Попадали старые аддоны, "наверное неисправно" , костыли не тянут.

Отредактировано drage2 (23-06-2018 12:10:50)

Отсутствует

 

№1266425-06-2018 19:16:49

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

«Merge Day!». Скину, пожалуй, свой расклад.

custom_buttons-0.0.5.9.0.1-fx.xpi
Рестарт, как всегда, нужен, хоть это нигде и не отображается в интерфейсе.

Конфигурационный код

Выделить код

Код:

//
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].AddonSettings && lockPref("extensions.allow-non-mpc-extensions", true);
    jsvals[0].signaturesNotRequired = true;

    if (evl) return jsvals.forEach(jsval => {try {jsval.eval(code);} catch(ex) {re(ex);}});

    var sl = Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader);
    Cu.importGlobalProperties(["URL", "Blob"]); var url = URL.createObjectURL(new Blob([(code)]));
    jsvals.forEach(jsval => {try {sl.loadSubScript(url, jsval);} catch(ex) {re(ex);}});

})(String.raw`((vzss, pckg) => {
    var trueDesc = {enumerable: true, value: true};
    typeof Extension == "function" && Object.defineProperty(Extension.prototype, "experimentsAllowed", trueDesc);
    "AddonInternal" in this && Object.defineProperty(AddonInternal.prototype, "providesUpdatesSecurely", trueDesc);
    this.isDisabledLegacy = () => false;
    if ("XPIDatabase" in this) this.XPIDatabase.isDisabledLegacy = () => false;
    try {SIGNED_TYPES.clear();} catch(ex) {};

    if (!vzss && !pckg) return;

    var re = /\x06\x03U\x04\x03\x14[\s\S](\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)0\x82\x02"0\r\x06\t/i;
    var getUUID = () => {
        var gen = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
        return (getUUID = () => gen.generateUUID().toString())();
    }
    var getIdFromString = str => {
        var match = str && str.match(re);
        return match ? match[1] : getUUID();
    }
    var getState = arg => ({
        signedState: AddonManager.SIGNEDSTATE_NOT_REQUIRED,
        cert: typeof arg == "object" ? arg : {commonName: arg}
    });
    var checkAddon = addon => {
        if (addon.id || (
            "_installLocation" in addon
                ? addon._installLocation.name == KEY_APP_TEMPORARY
                : addon.location.isTemporary
        ))
            return getState(null);
    }
    var getRoot = () =>
        !AppConstants.MOZ_REQUIRE_SIGNING && Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false)
            ? Ci.nsIX509CertDB.AddonsStageRoot : Ci.nsIX509CertDB.AddonsPublicRoot;

    if (vzss) {
        var getURI = file => {
            var jsval = Cu.import("resource://gre/modules/addons/XPIProvider.jsm", {});
            return (getURI = file => jsval.getURIForResourceInFile(file, "META-INF/mozilla.rsa"))(file);
        }
        var getIdFromFile = file => {
            var str, is = {close() {}}, sis = {close() {}};
            try {
                is = Services.io.newChannelFromURIWithLoadInfo(getURI(file), null).open();
                sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
                sis.init(is);
                str = sis.readBytes(sis.available());
            } catch(ex) {}
            sis.close(); is.close();
            return getIdFromString(str);
        }
        this.verifyZipSignedState = function verifyZipSignedState(aFile, aAddon) {
            var res = checkAddon(aAddon);
            return res ? Promise.resolve(res) : new Promise(resolve => {
                var callback = {openSignedAppFileFinished(rv, zipReader, cert) {
                    zipReader && zipReader.close();
                    resolve(getState(cert || getIdFromFile(aFile)));
                }};
                gCertDB.openSignedAppFileAsync(getRoot(), aFile, callback.wrappedJSObject = callback);
            });
        }
    }

    if (pckg) Package.prototype.verifySignedState = function verifySignedState(addon) {
        var res = checkAddon(addon);
        return res ? Promise.resolve(res) : new Promise(resolve =>
            this.verifySignedStateForRoot(addon, getRoot()).then(({cert}) => {
                if (cert)
                    resolve(getState(cert));
                else
                    this.readBinary("META-INF", "mozilla.rsa").then(
                        buffer => resolve(getState(
                            getIdFromString(String.fromCharCode(...new Uint8Array(buffer)))
                        )),
                        () => resolve(getState(getUUID()))
                    );
            }, Cu.reportError)
        );
    }
})(
    "verifyZipSignedState" in this, typeof Package == "function"
);`)} catch(err) {
    err.message != "Components is not defined" && Components.utils.reportError(err);
}


Небольшое отступление про config-prefs.js
Напомню: в Firefox 60+ добавлен косяк с чтением файла настроек в кодировке UTF-8,
а именно — парсер не понимает BOM и образует ошибку «prefs parse error: unexpected character».
Таким образом, первая pref'ка сочтётся испорченной и будет проигнорирована.

Используйте кодировку без BOM или поставьте первым символом точку с запятой [;]


О будущем
Для релизных версий Firefox 62+ пользовательские возможности
конфигурирования будут выпилены.

Однако, по моим наблюдениям, Firefox, при запуске, не проверяет
расширения и WebExtensions, но добавляет таймер проверки.
А nsIUpdateTimerManager предоставляет на лечение отсрочку в две минуты.

Этого вполне достаточно чтобы запустить конфигурационный код
другим способом, например, через userChrome.css
Так и сделал. Пока, вроде, полёт нормальный.

Если эта концепция верна и не изменится в дальнейшем,
то расширения смогут просуществовать влоть до
самого́ существования расширений как таковых.

Отсутствует

 

№1266525-06-2018 21:11:23

sonyas75
Участник
 
Группа: Members
Откуда: Ставрополь
Зарегистрирован: 22-03-2011
Сообщений: 557
UA: Firefox 57.0

Re: Custom Buttons

Dumby пишет

Если эта концепция верна и не изменится в дальнейшем,
то расширения смогут просуществовать влоть до
самого́ существования расширений как таковых.

ой, не сглазь! ттт :)

Отсутствует

 

№1266625-06-2018 21:25:10

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 60.0

Re: Custom Buttons

Dumby
есть другая проблема. Начиная с 61 напрочь падают xul аддоны без подписи....К, примеру , Newsfox ... В 60 -запросто, в 61 - пишет "повреждено".....
Так происходит и с моими "костылями" и с вашими....Печалька...Теперь надо лепить bootstrap.js , это муторно.

Отредактировано drage2 (26-06-2018 01:03:11)

Отсутствует

 

№1266726-06-2018 09:49:24

menych
Участник
 
Группа: Members
Зарегистрирован: 26-06-2018
Сообщений: 1
UA: Chrome 67.0

Re: Custom Buttons

Пожалуйста, помогите с кодом для thunderbird, чтобы при нажатии на кнопку очищались враз все to, cc и bcc.
Спасибо.

Отсутствует

 

№1266826-06-2018 10:21:48

momo2000
Участник
 
Группа: Members
Зарегистрирован: 03-09-2015
Сообщений: 237
UA: Firefox 60.0

Re: Custom Buttons

А можно с помощью CB менять горячие клавиши?
например команду "Вставить и перейти"
BrowserOpenTab(); gURLBar.select(); goDoCommand('cmd_paste'); gURLBar.handleCommand();

Отсутствует

 

№1266926-06-2018 19:42:40

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 4001
UA: unknown 0.0

Re: Custom Buttons

momo2000 пишет

А можно с помощью CB менять горячие клавиши?
например команду "Вставить и перейти"
BrowserOpenTab(); gURLBar.select(); goDoCommand('cmd_paste'); gURLBar.handleCommand();

Создать кнопку, задать для неё горячую клавишу...

скрытый текст
b1l2lqaxigp3qrflkxc9rckdez8.png

Dumby пишет

«Merge Day!». Скину, пожалуй, свой расклад.

Превосходно, спасибо огромное!

Отсутствует

 

№1267027-06-2018 14:06:50

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 60.0

Re: Custom Buttons

Аддоны web итак устанавливаются . xul аддоны, начиная с 61 - нет!!! И никакие костыли не помогут.
Одного доведенного до ума CB мало. Тем более половина кнопок падает и без мультирежима. Больше никакой радости нет и не будет
Оптимисты с огромными глазами станут банальными реалистами.

sonyas75 пишет

Dumby пишет:

Если эта концепция верна и не изменится в дальнейшем,
то расширения смогут просуществовать влоть до
самого́ существования расширений как таковых.

Ха, толку от этого? См.выше. "Оставь надежду, всяк сюда входящий"!

Отредактировано drage2 (27-06-2018 14:13:32)

Отсутствует

 

№1267127-06-2018 14:17:28

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 4001
UA: unknown 0.0

Re: Custom Buttons

Dumby пишет

Рестарт, как всегда, нужен, хоть это нигде и не отображается в интерфейсе.

Понадобилось даже два рестарта.
Но что интересно: при переходе с 59 на 60 неработоспособны оказались около четверти кнопок.
Сейчас же все пять десятков работают как надо, словно и обновления не было.

Отсутствует

 

№1267228-06-2018 01:50:32

f00fc7c8
Участник
 
Группа: Members
Зарегистрирован: 02-10-2009
Сообщений: 668
UA: Firefox 52.0

Re: Custom Buttons

А CB/WE, вообще намечается? Пусть даже к нему будет хелп на сотню страниц..

Отсутствует

 

№1267328-06-2018 12:35:33

Smitis
Участник
 
Группа: Members
Зарегистрирован: 29-01-2016
Сообщений: 10
UA: Firefox 56.0

Re: Custom Buttons

Подскажите, как в CB получить содержимое текущей страницы? Раньше был content.document и можно было, например, выполнить content.document.getElementsByTagName('link'); и получить список ссылок. Сейчас (FF 61, CB 0.0.5.9.0.1) content (window.content) имеет значение null. Плиз!

Отсутствует

 

№1267428-06-2018 16:52:41

thrower
Участник
 
Группа: Members
Зарегистрирован: 28-11-2013
Сообщений: 207
UA: Firefox 60.0

Re: Custom Buttons

Подскажите код "Открыть выделенное как ссылку"

Что-то не получается этот код с readFromClipboard() приспособить под getSelection:

Open URL from Clipboard

Выделить код

Код:

const IN_NEW_TAB = true;
const IN_BACKGROUND = false;

var str = readFromClipboard();
if (!str)
  return;
if (IN_NEW_TAB)
  gBrowser.loadOneTab(str, null, null, null, IN_BACKGROUND, false);
else
  gBrowser.loadURI(str);

Отредактировано thrower (28-06-2018 16:53:06)

Отсутствует

 

№1267529-06-2018 07:39:24

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2249
UA: Firefox 52.0

Re: Custom Buttons

Dumby пишет

Если эта концепция верна

Не совсем верна. Как минимум, расширения выключаются
сразу после старта браузера в том случае, если изменился номер версии Firefox.

f00fc7c8 пишет

А CB/WE, вообще намечается?

Не намечается и не может намечаться. CB и WE не имеют друг к другу
никакого отношения, и, даже, в каком-то смысле, они противоположны.
А если Ctrl+N всё ещё раздражает, то положи во вкладку Инициализация
addEventListener("keydown",e=>e.ctrlKey&&e.code=="KeyN"&&!e.shiftKey&&!e.altKey&&e.preventDefault()+BrowserOpenTab());

Smitis пишет

content (window.content) имеет значение null

Ну как же в голове не умещается одна простая мысль, что content'а здесь нет.
content находится в другом, дочернем процессе. А кнопка находится в главном,
родительском процессе, и у процессов нет никаких общих объектов.

Кнопка может лишь попросить нужные инстанции главного процесса
загру(зи|жа)ть в дочерний процесс скрипт. Вот, например, самый простой случай.
Положи во вкладку Код и нажимай, заодно узнаешь как правильно называется то,
что возвращает метод getElementsByTagName()

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

Выделить код

Код:

var code = `
    var result = content.document.getElementsByTagName('link');
    content.alert(
        result + "\\n\\nLength: " + result.length
    );
`;
var url = "data:," + encodeURIComponent(code);
gBrowser.selectedBrowser.messageManager.loadFrameScript(url, false);

thrower пишет

Что-то не получается этот код с readFromClipboard() приспособить под getSelection

Если имеется в виду выделенное на странице, то, как вариант

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

Выделить код

Код:

const IN_NEW_TAB = true;
const IN_BACKGROUND = false;

function loadStr(str) {
    if (!str)
        return;
    if (IN_NEW_TAB)
        gBrowser.loadOneTab(str, null, null, null, IN_BACKGROUND, false);
    else
        gBrowser.loadURI(str);
}
var msgName = "CB:StringLoader:ContentSelection";
var code = `
    var fw = {}, fe = Services.focus.getFocusedElementForWindow(content, true, fw);
    var sel = fe && fe.editor
        ? fe.editor.selectionController
            .getSelection(Ci.nsISelectionController.SELECTION_NORMAL)
        : fw.value.getSelection();
    sendAsyncMessage("${msgName}", sel.toString());
`;
var mm = gBrowser.selectedBrowser.messageManager;
var listener = msg => {
    mm.removeMessageListener(msgName, listener);
    loadStr(msg.data.trim());
}
mm.addMessageListener(msgName, listener);
mm.loadFrameScript("data:," + encodeURIComponent(code), false);

Отсутствует

 

Board footer

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