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

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№355127-01-2012 21:22:58

WW
Web traveler
 
Группа: Members
Откуда: Сибирь
Зарегистрирован: 21-12-2011
Сообщений: 95
UA: Firefox 10.0

Re: Custom Buttons

Void Dragon пишет

Причем тут загрузка на хост? Я об этом не слова же. А репа у меня скрыта, так что не волнует)

Я, перед Вами извинился уже, могу повторить, прошу прощение, что пост воспринял в свой адрес, ну а про репу, я тому кто мне её понизил)))

LongLogin пишет

да вроде недавно искали, и вроде что-то находили, не кнопку может, а дополнение, но точно не uploudprogress

давай, WW, дерзай
найдёшь, доложишь

Спасибо, попробую) всё что находил, на подобии как у оперы, то есть загрузка страницы,  а мне нужна, именно файла.

bunda1 пишет

Такой кнопки нет.

Жаль, а у меня на Вас, вся надежда была.


Firefox - самый лучший брауз!!!

Отсутствует

 

№355228-01-2012 15:16:25

Abricosio
Участник
 
Группа: Members
Зарегистрирован: 13-01-2011
Сообщений: 30
UA: Firefox 9.0
Веб-сайт

Re: Custom Buttons

Подскажите пожалуйста, есть приложение Cookie Importer https://addons.mozilla.org/ru/firefox/a … r/?src=api, команда на импорт куки выглядит так:

Выделить код

Код:

krkAddons.cookieImporter.doImport();

Функция выбора файла далее выглядит так:

Выделить код

Код:

krkAddons.cookieImporter.doImport = function(){

    // Load FielPicker
    var ifp = Components.interfaces.nsIFilePicker;
    var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(ifp);

    // Set FilePicker attributes
    fp.init(window, null, ifp.modeOpen);
    fp.appendFilters(ifp.filterAll | ifp.filterText);
    fp.filterIndex = 1;
    fp.defaultString = "cookies.txt";

Подскажите пожалуйста, как с помощью Custom Buttons сделать кнопку, которая импортировала бы файл c:\cookies.txt? Без запроса на поиск данного файла, а сразу...


Спасибо!

Отсутствует

 

№355328-01-2012 16:33:47

Abricosio
Участник
 
Группа: Members
Зарегистрирован: 13-01-2011
Сообщений: 30
UA: Firefox 9.0
Веб-сайт

Re: Custom Buttons

К сожалению, не подойдет, cookiesafe не хочет работать с современными версиями FF, я долго пытался их подружить... Да и там произвольная кука, а мне нужна определённая...

Отредактировано Abricosio (28-01-2012 16:35:51)

Отсутствует

 

№355428-01-2012 17:07:35

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 9.0

Re: Custom Buttons

Abricosio пишет

Подскажите пожалуйста, как с помощью Custom Buttons сделать кнопку, которая импортировала бы файл c:\cookies.txt? Без запроса на поиск данного файла, а сразу...

Например, так:

Выделить код

Код:

--- import.js
+++ import-mod.js
@@ -2,27 +2,17 @@
 if(!krkAddons.cookieImporter) krkAddons.cookieImporter={};
 
 krkAddons.cookieImporter.doImport = function(){
-
-    // Load FielPicker
-    var ifp = Components.interfaces.nsIFilePicker;
-    var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(ifp);
-
-    // Set FilePicker attributes
-    fp.init(window, null, ifp.modeOpen);
-    fp.appendFilters(ifp.filterAll | ifp.filterText);
-    fp.filterIndex = 1;
-    fp.defaultString = "cookies.txt";
-
     try{
 
-        // Let User choose a file
-        var rv = fp.show();
+        var file = Components.classes["@mozilla.org/file/local;1"]
+            .createInstance(Components.interfaces.nsILocalFile);
+        file.initWithPath("c:\\cookies.txt");
 
-        if (rv == ifp.returnOK) {
+        if (file.exists()) {
 
             // Open the selected file
             var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
-            istream.init(fp.file, 0x01, 0444, 0); // readonly
+            istream.init(file, 0x01, 0444, 0); // readonly
             // Select nsILineInputStream interface for "readline()" usage 
             istream.QueryInterface(Components.interfaces.nsILineInputStream);

Отредактировано Infocatcher (28-01-2012 17:08:06)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№355528-01-2012 22:24:41

Abricosio
Участник
 
Группа: Members
Зарегистрирован: 13-01-2011
Сообщений: 30
UA: Firefox 9.0
Веб-сайт

Re: Custom Buttons

2Infocatcher
Спасибо большое за помощь!
Только у меня почему-то не реагирует на нажатие кнопки...

Отсутствует

 

№355629-01-2012 00:57:30

Abricosio
Участник
 
Группа: Members
Зарегистрирован: 13-01-2011
Сообщений: 30
UA: Firefox 9.0
Веб-сайт

Re: Custom Buttons

okkamas_knife пишет

Abricosio пишет: 2InfocatcherСпасибо большое за помощь!Только у меня почему-то не реагирует на нажатие кнопки...Infocatcher показал какие строки убрать а какие добавить в указанном файлеи тогда не будет вызываться тот диалог.то бишь этот код надо не в кнопку пихать.

А понял... А возможно все таки через custom buttons реализовать функционал, просто в идеале также хотел реализовать импорт файла с куками, название которого будет содержаться в файле c:/cookies.txt и выглядеть как
cookies=111 и т.д.  (вот эту 111.txt в данном случае и подгружать)
Могу также как предыдущий пользователь с подобным вопросом поспособствовать финансовым пожертвованием на какое-либо дополнение или автору кода кнопки.

Если в двух словах описать необходимую кнопку:
Берем из файла c:/cookies.txt
строчку cookies=название
и импортируем файл с куками "название.txt" из папки c:/cookies

Отсутствует

 

№355729-01-2012 17:55:41

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 9.0
Веб-сайт

Re: Custom Buttons

Void Dragon пишет

если с клавиатуры, то не правильно.

Можно по таймеру проверять текущую раскладку.

Добавлено 29-01-2012 17:57:34
Abricosio

При посещении любого сайта, и нажатии на определенную кнопку, все внутренние ссылки на открытой странице сделать красными (изменить для них цвет)?

Если я правильно понял:

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

Выделить код

Код:

function makeURL (url)
{
    var uri = makeURI (url);
    try
    {
        uri = uri. QueryInterface (Components. interfaces. nsIURL);
    }
    catch (e)
    {
        uri = null;
    }
    return uri;
}
var doc = gBrowser. contentDocument;
var cdurl = makeURL (doc. location. href);
cdurl. ref = "";
var links = doc. links;
var curl;
for (var i = 0; i < links. length; i++)
{
    curl = makeURL (links [i]. href);
    if (curl && (curl. host == cdurl. host))
        links [i]. style. backgroundColor = "red";
}

Отредактировано Anton (29-01-2012 17:57:34)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№355829-01-2012 19:47:10

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 9.0

Re: Custom Buttons

okkamas_knife пишет

то бишь этот код надо не в кнопку пихать.

Да можно и в кнопку, только тогда нужно еще вызов функции добавить.

В секцию «код»

Выделить код

Код:

importCookies("c:\\cookies.txt");

function importCookies(path){
    try{

        var file = Components.classes["@mozilla.org/file/local;1"]
            .createInstance(Components.interfaces.nsILocalFile);
        file.initWithPath(path);

        if (file.exists()) {

            // Open the selected file
            var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
            istream.init(file, 0x01, 0444, 0); // readonly
            // Select nsILineInputStream interface for "readline()" usage 
            istream.QueryInterface(Components.interfaces.nsILineInputStream);

            // Open CookieManager connection
            var cm = Components.classes["@mozilla.org/cookiemanager;1"].getService(Components.interfaces.nsICookieManager2);
            if(!cm){
                alert("Could not load nsICookieManager2");
                return;
            }

            var line = {}, cookieNum, fields, hasmore;
            var cHost, cPath, cName, cValue, cSecure, cSession, cExpiry;
            cookieNum = 0;

            do{
                /* One line from cookies.txt looks like ...
                * .google.com  TRUE     /     FALSE      0      someID 4815162342
                *  <host>    <domain> <path>  <ssl>   <expiry>  <name>  <value>
                *    0          1       2       3        4         5       6
                */
                hasmore = istream.readLine(line);
                var fields = line.value.split("\t", 7);
                if(fields.length != 7)
                    continue;
                
                // Read needed fields
                cHost    = fields[0];
                cPath    = fields[2];
                cName    = fields[5];
                cValue   = fields[6];
                cSecure  = (fields[3] == "TRUE");
                cExpiry  = parseInt(fields[4]);
                // Expiry == 0 means this is a session cookie
                cSession = (cExpiry == 0);
                // This is so weird! cm.add() won't take cSession=TRUE and cExpiry=0
                // because cExpiry < Today! So we work around this by making the cookie
                // expire Sonntag, Feb. 7 2106 07:28:15. See you then ;-)
                if(!cExpiry)
                    cExpiry = 0xffffffff;
                
                // Add that cookie using the CookieManager
                cm.add(cHost, cPath, cName, cValue, cSecure, false, cSession, cExpiry);
                
                cookieNum++;
            }while(hasmore);

            // Close cookies.txt
            istream.close();

            alert("Imported " + cookieNum + " Cookies!");

        }
    }catch(err){ alert(err.toString()); }

};


Только я не проверял. Если расширение работает, то и код должен.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№355929-01-2012 20:29:39

Abricosio
Участник
 
Группа: Members
Зарегистрирован: 13-01-2011
Сообщений: 30
UA: Firefox 9.0
Веб-сайт

Re: Custom Buttons

Infocatcher пишет

okkamas_knife пишет: то бишь этот код надо не в кнопку пихать.Да можно и в кнопку, только тогда нужно еще вызов функции добавить.В секцию «код»
Только я не проверял. Если расширение работает, то и код должен.

Спасибо огромное работает как нужно, хотел только уточнить, свой вопрос
Если название файла содержится в файле c:\file.txt
как строчка cookies=название куки (без .txt)
Можно ли добавить такую вещь, как чтение данного названия из данного файла и импорт кук из указанного файла (c:\cookies\название куки.txt)?

Отсутствует

 

№356029-01-2012 22:17:19

Abricosio
Участник
 
Группа: Members
Зарегистрирован: 13-01-2011
Сообщений: 30
UA: Firefox 9.0
Веб-сайт

Re: Custom Buttons

Anton пишет

AbricosioПри посещении любого сайта, и нажатии на определенную кнопку, все внутренние ссылки на открытой странице сделать красными (изменить для них цвет)?Если я правильно понял:

Спасибо большое!
Два вопроса по данному коду:
Находимся на сайте1, на нем ссылка на сайт2 (который необходимо задать в кнопке заранее), как сделать красными ссылки от этого сайта2?
Как сделать постоянно включенную данную функцию? Вставка кода в инициализацию не помогает... Спасибо!

Отсутствует

 

№356130-01-2012 12:39:00

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 12.0

Re: Custom Buttons

bunda1
Обнаружил баг в кнопке Toggle  Find+3. При наборе текста с клавиатуру курсор исчезает с Find bar после ввода каждой буквы, приходится его постоянно возвращать, иначе происходит просто замещение букв.

Отсутствует

 

№356230-01-2012 13:31:49

Ste_pan
Участник
 
Группа: Members
Откуда: приморский край п.сибирцево
Зарегистрирован: 13-02-2011
Сообщений: 63
UA: Firefox 7.0

Re: Custom Buttons

здраствуйте хочу выложить кнопку "add-ons-manager"
кнопка в выподающем меню выводит списки аддонов,тем,персон,и стилей
при клике по menuitem в аддонах -опции аддона,в персонах -выбрать данную персону(если тема не стандартная все равно выбирается (не надо менять не чего в about:config и перезагружатся))
в  стилях-редактировать выбраный стиль
инициалицация

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

Выделить код

Код:

Application.prefs.get("lightweightThemes.isThemeSelected").events.addListener("change", function() {var s=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);s.setBoolPref('lightweightThemes.isThemeSelected', true)});
var val = this. getAttribute ("id"); 
var s=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm"); 
this. x= function ()
    {
        var groupbox=
        <tabbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
        <tabs>
            <tab label="add-ons" image="11"/>
            <tab label="themes" image="11"/>
            <tab label="styles" image="11"/>
            <tab label="personas" image="11"/>
        </tabs>
        <tabpanels>
            <tabpanel class="add_on">
                <vbox class="add_on" hidden="false">
                    <hbox hidden="false">
                        <label value="Enable" onclick="var  style_=&quot;color:#000000;font-family:monospace;font-weight:lighter;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#000000;&quot;&#xA;var style_sel ='color:#FF6600;font-family:monospace;font-weight:lighter;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#6633FF'&#xA;var Node=this.parentNode.childNodes;&#xA;for (var i = 0; i &lt;3; i++)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#xA;Node[i]. setAttribute (&quot;style&quot;, style_)&#xA;&#x9;&#x9;};&#xA;this.setAttribute (&quot;style&quot;,style_sel)&#xA;var Node=this.parentNode.nextSibling .childNodes;&#xA;for (var i = 0; i &lt;3; i++)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#xA;if(Node[i].className ==this.className){&#xA;&#x9;&#x9;&#x9;&#x9;Node[i].hidden=false}&#xA;&#x9;&#x9;&#x9;else{&#xA;&#x9;&#x9;&#x9;&#x9;Node[i].hidden=true}&#xA;&#x9;&#x9;};&#xA;&#x9;&#x9;&#xA;" class="Enable_"/>
                        <label value="Disable" onclick="var  style_=&quot;color:#000000;font-family:monospace;font-weight:lighter;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#000000;&quot;&#xA;var style_sel ='color:#FF6600;font-family:monospace;font-weight:lighter;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#6633FF'&#xA;var Node=this.parentNode.childNodes;&#xA;for (var i = 0; i &lt;3; i++)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#xA;Node[i]. setAttribute (&quot;style&quot;, style_)&#xA;&#x9;&#x9;};&#xA;this.setAttribute (&quot;style&quot;,style_sel)&#xA;var Node=this.parentNode.nextSibling .childNodes;&#xA;for (var i = 0; i &lt;3; i++)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#xA;if(Node[i].className ==this.className){&#xA;&#x9;&#x9;&#x9;&#x9;Node[i].hidden=false}&#xA;&#x9;&#x9;&#x9;else{&#xA;&#x9;&#x9;&#x9;&#x9;Node[i].hidden=true}&#xA;&#x9;&#x9;};&#xA;&#x9;&#x9;&#xA;" class="Disable_"/>
                        <label value="False" onclick="var  style_=&quot;color:#000000;font-family:monospace;font-weight:lighter;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#000000;&quot;&#xA;var style_sel ='color:#FF6600;font-family:monospace;font-weight:lighter;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#6633FF'&#xA;var Node=this.parentNode.childNodes;&#xA;for (var i = 0; i &lt;3; i++)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#xA;Node[i]. setAttribute (&quot;style&quot;, style_)&#xA;&#x9;&#x9;};&#xA;this.setAttribute (&quot;style&quot;,style_sel)&#xA;var Node=this.parentNode.nextSibling .childNodes;&#xA;for (var i = 0; i &lt;3; i++)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#xA;if(Node[i].className ==this.className){&#xA;&#x9;&#x9;&#x9;&#x9;Node[i].hidden=false}&#xA;&#x9;&#x9;&#x9;else{&#xA;&#x9;&#x9;&#x9;&#x9;Node[i].hidden=true}&#xA;&#x9;&#x9;};&#xA;&#x9;&#x9;&#xA;" class="False_"/>
                    </hbox>
                    <box>
                        <vbox class="Enable_" hidden="false"/>
                        <vbox class="Disable_" hidden="true"/>
                        <vbox hidden="true" class="False_"/>
                    </box>
                </vbox>
            </tabpanel>
            <tabpanel class="theme_"/>
            <tabpanel class="styles_">
                <vbox>
                    <vbox class="st_e"/>
                    <menuseparator/>
                    <vbox class="st_d"/>
                </vbox>
            </tabpanel>
            <tabpanel class="pesonas_"/>
        </tabpanels>
    </tabbox>
    groupbox =  cbu. makeXML(groupbox);
    
    return groupbox
    }
this. xulFav = function ()
    {
        var groupbox=
        
        <vbox onmouseout="this.firstChild.nextSibling.hidden=true" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
            <vbox onmouseover="this.nextSibling.hidden=false">
                <menuitem label="hjgjghjghj" class="menuitem-iconic bookmark-item"/>
            </vbox>
            <hbox hidden="true" onblur="this.hidden=true" onmouseup="this.hidden=true" onmouseover="this.hidden=false">
                <button label="Preview" orient="horizontal" onmouseover="this.parentNode.hidden=false" image="11"/>
                <button label="del" onmouseover="this.parentNode.hidden=false" image="11"/>
                <button label="-" onmouseover="this.parentNode.hidden=false" image="11"/>
            </hbox>
        </vbox>
    
    
    groupbox =  cbu. makeXML(groupbox);
    
    return groupbox
    }
this. xulFavSel = function ()
    {
        var groupbox=
        
        <vbox onmouseout="this.firstChild.nextSibling.hidden=true" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
            <vbox onmouseover="this.nextSibling.hidden=false">
                <menuitem label="hjgjghjghj" class="menuitem-iconic bookmark-item"/>
            </vbox>
            <hbox hidden="true" onblur="this.hidden=true" onmouseup="this.hidden=true" onmouseover="this.hidden=false">
                <button label="del" onmouseover="this.parentNode.hidden=false" image="11"/>
            </hbox>
            <menuseparator/>
        </vbox>
        

    groupbox =  cbu. makeXML(groupbox);
    
    return groupbox
    }

this. xul_ = function ()
    {
        var groupbox=
        
        <vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onmouseout="this.firstChild.nextSibling.hidden=true" class="parent_">
        
        <vbox onmouseover="this.nextSibling.hidden=false">
            <menuitem label="hjgjghjghj" class="menuitem-iconic bookmark-item"/>
        </vbox>
        <hbox hidden="true" onblur="this.hidden=true" onmouseup="this.hidden=true" onmouseover="this.hidden=false">
            <button label="Preview" orient="horizontal" onmouseover="this.parentNode.hidden=false" image="11"/>
            <button label="del" onmouseover="this.parentNode.hidden=false" image="11"/>
            <button label="+" onmouseover="this.parentNode.hidden=false" image="11"/>
        </hbox>
    </vbox>
    
    groupbox = cbu. makeXML (groupbox);
    
    return groupbox
    }
    
var s=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
var menupopup= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "menupopup");

if(s.getChildList('').indexOf('LightweightThemeManager.Favorites_')==-1)
    {
        
        s.setCharPref('LightweightThemeManager.Favorites_','')
    }
var fav=s.getCharPref('LightweightThemeManager.Favorites_');
var arr = LightweightThemeManager.usedThemes;
    if(!(LightweightThemeManager.currentTheme))
        {
            var currentTheme=0
        }
    else
        {
            var currentTheme=LightweightThemeManager.currentTheme.id
            
        }
    var groupbox= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "groupbox");
    groupbox. setAttribute ("id",'groupbox_p');
    var box_= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "vbox");    
    box_. setAttribute ("id",'box_p');
    for (var i = 0; i < arr.length; i++)
    {
        if(!(fav==''))
            {
                var fl=0
                var data=fav.split(',')
                for (var j = 0; j < data.length; j++)
                {
                        if(data[j]==arr[i].id)
                        {    
                            if(currentTheme==arr[i].id)
                                {
                                    var xul=this. xulFavSel()
                                    var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                    menuItem. setAttribute ("src",arr[i]. iconURL);
                                    menuItem. setAttribute ("label",arr[i]. name);
                                    menuItem. setAttribute ("id",arr[i]. id);
                                    var b_= xul. getElementsByTagName ("button") [0];
                                    b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.unst(event)');
                                    groupbox.appendChild (xul);
                                    fl=1
                                }
                            else
                                {
                                    var xul=this. xulFav()
                                    var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                    menuItem. setAttribute ("src",arr[i]. iconURL);
                                    menuItem. setAttribute ("label",arr[i]. name);
                                    menuItem. setAttribute ("id",arr[i]. id);
                                    menuItem.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa._Changed(event)');
                                    var b_= xul. getElementsByTagName ("button") [0];
                                    b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.Preview(event)');
                                    var b_= xul. getElementsByTagName ("button") [1];
                                    b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.unst(event)');
                                    var b_= xul. getElementsByTagName ("button") [2];
                                    b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.favDel(event)');
                                    groupbox.appendChild (xul);
                                    fl=1
                                }
                        }
                }
                if(fl==0)
                    {
                        switch (arr[i].id)
                        {    
                            case currentTheme:
                                var xul=this. xulFavSel()
                                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                menuItem. setAttribute ("src",arr[i]. iconURL);
                                menuItem. setAttribute ("label",arr[i]. name);
                                menuItem. setAttribute ("id",arr[i]. id);
                                var b_= xul. getElementsByTagName ("button") [0];
                                b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.unst(event)');
                                groupbox.appendChild (xul);
                            break;
                            default:
                                var xul=this. xul_()
                                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                menuItem. setAttribute ("src",arr[i]. iconURL);
                                menuItem. setAttribute ("label",arr[i]. name);
                                menuItem. setAttribute ("id",arr[i]. id);
                                menuItem.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa._Changed(event)');
                                var b_= xul. getElementsByTagName ("button") [2];
                                b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.favADD(event)');
                                var b_= xul. getElementsByTagName ("button") [1];
                                b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.unst(event)')
                                var b_= xul. getElementsByTagName ("button") [0];
                                b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.Preview(event)');
                                box_.appendChild (xul);
                            break;
                        }
                    }
            }
        else
            {
                switch (arr[i].id)
                        {    
                            case currentTheme:
                                var xul=this. xulFavSel()
                                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                menuItem. setAttribute ("src",arr[i]. iconURL);
                                menuItem. setAttribute ("label",arr[i]. name);
                                menuItem. setAttribute ("id",arr[i]. id);
                                var b_= xul. getElementsByTagName ("button") [0];
                                b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.unst(event)');
                                groupbox.appendChild (xul);
                            break;
                            default:
                                var xul=this. xul_()
                                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                menuItem. setAttribute ("src",arr[i]. iconURL);
                                menuItem. setAttribute ("label",arr[i]. name);
                                menuItem. setAttribute ("id",arr[i]. id);
                                var b_= xul. getElementsByTagName ("button") [2];
                                b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.favADD(event)');
                                var b_= xul. getElementsByTagName ("button") [1];
                                b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.unst(event)');
                                var b_= xul. getElementsByTagName ("button") [0];
                                b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.Preview(event)');
                                box_.appendChild (xul);
                            break;
                        }
            }    
    }
var box_0=    this. x()
var boxx=    box_0.getElementsByClassName ("pesonas_")[0]

    if(groupbox.childNodes.length==0)
        {
            boxx.appendChild (box_);
        }
    else
        {
            boxx.appendChild (groupbox);
            groupbox.appendChild(document.createElement("menuseparator"));
            groupbox.appendChild (box_);
        }
        
        
this. favDel= function (event)
    {
        
        
        var id= event. originalTarget.parentNode.previousSibling.firstChild.id;
        var fav=s.getCharPref('LightweightThemeManager.Favorites_');
        var f=fav.indexOf(id)
        var n=fav.slice(0,f)
        var k=fav.slice(id.length+f)
        var n=n.slice(0,-1)
        if(n==0)
            {
                var k=k.slice(1)
            }
            
        var res=n+k
        s.setCharPref('LightweightThemeManager.Favorites_',res)
        var groupbox_p = document.getElementById("groupbox_p");
        var box_p = document.getElementById("box_p");
        el=event. originalTarget.parentNode.parentNode.parentNode
        var Theme=LightweightThemeManager.getUsedTheme(id)
        var xul=this. xul_()
                                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                menuItem. setAttribute ("src",Theme. iconURL);
                                menuItem. setAttribute ("label",Theme. name);
                                menuItem. setAttribute ("id",Theme. id);
                                var b_= xul. getElementsByTagName ("button") [2];
                                    
                                    b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.favADD(event)');
        el. parentNode. removeChild (el);
        box_p.appendChild (xul);
    }
    
this. favADD= function (event)
    {
        
        
        var id= event. originalTarget.parentNode.previousSibling.firstChild.id;
        var fav=s.getCharPref('LightweightThemeManager.Favorites_');
        var res=fav+','+id
        s.setCharPref('LightweightThemeManager.Favorites_',res)
        var groupbox_p = document.getElementById("groupbox_p");
        var box_p = document.getElementById("box_p");
        el=event. originalTarget.parentNode.parentNode
        var Theme=LightweightThemeManager.getUsedTheme(id)
        var xul=this. xulFav()
                                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                menuItem. setAttribute ("src",Theme. iconURL);
                                menuItem. setAttribute ("label",Theme. name);
                                menuItem. setAttribute ("id",Theme. id);
                                var b_= xul. getElementsByTagName ("button") [2];
                                b_.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.favDel(event)');
        el. parentNode. removeChild (el);
        groupbox_p.appendChild (xul);
    }
this. unst= function (event)
    {
        var id= event. originalTarget.parentNode.previousSibling.firstChild.id;

        var groupbox_p = document.getElementById("groupbox_p");
        var box_p = document.getElementById("box_p");
        el=event. originalTarget.parentNode.parentNode
        if(!(el. hasAttribute ("class")))
            el=event. originalTarget.parentNode.parentNode.parentNode
        var Theme=LightweightThemeManager.getUsedTheme(id)
        
        Components.utils.import("resource://gre/modules/AddonManager.jsm");
        AddonManager.getAddonsByTypes(["theme"], function(addons) {
        for(var i = 0, l = addons.length; i < l; i++)
        {
            if(addons[i].id == id+'@personas.mozilla.org') 
                {
                    el. parentNode. removeChild (el);
                    addons[i].uninstall();
                }
        }
        });
    }            
this. Preview= function (event)
    {
        var id= event. originalTarget.parentNode.previousSibling.firstChild.id;
        var Theme=LightweightThemeManager.getUsedTheme(id)
        LightweightThemeManager.previewTheme(Theme)
    }
this. _Changed= function (event)
    {
        var int_=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
        var id= event. originalTarget.id;
        var Theme=LightweightThemeManager.getUsedTheme(id)
        LightweightThemeManager.themeChanged(Theme)
        
        Components.utils.import("resource://gre/modules/AddonManager.jsm");
        AddonManager.getAddonsByTypes(["theme"], function(addons) {
        for(var i = 0, l = addons.length; i < l; i++)
        {
            if(addons[i].isActive  == true) 
                {
                    if(!(addons[i].id.slice(addons[i].id.length-21)=='@personas.mozilla.org'))
                        {
                            var res=addons[i]
                            var res0=addons[i].id
                            var THIS=this
                            AddonManager.addAddonListener({ onDisabled: function(res) 
                                {
                                    AddonManager.getAddonByID(res0,function(a) 
                                        {
                                            a.userDisabled=false
                                            Services.obs.notifyObservers(null, "lightweight-theme-styling-update",JSON.stringify(Theme));
                                            AddonManager.removeAddonListener({ onDisabled: function(a){}})
                                        })
                                }})
                            
                            res.userDisabled=false
                        }
                
                }
                
                
        }
        
        });
    
    }    
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


 
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var iconURL='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACV0lEQVR4Xi3OT2ibZQDH8c/7msT1pZqOtlQ32ulaGJVuB0UvMiyRCbZCT14MHUIzcaCCFcZAGOiKIB3UkyCeBBU86EGYiPZanTIZwnTWScdqbdM/U/vHN1mS5jGHHD637w9+TOM1vKrTtPe8419z7njflrmWt2yb9ocpE0p4CaW2KTjVdtKgkqsnloZCMYyHQjgeHguD4YndoeBDwagZpzCKsfbmNIzjZZxF0aiS+Qd/TUJvRRjYzQcf2DPhotP6TOBJTOE5FIlVPG/NZEvRpq6Wpcp/dR1RXlcmz5pUasWOUalJDQ+3AOC83aGb/SF7TfCdMHCzJ5zYHwjKghXhwC1NXwvmBbOCgheVMI4iGSOas0MXXfWTdWU/WnBjc5kKUqpZkUGibkIFC1IdetSdwZXInB3HJS7bUNR3aCQbr67VaeAuKthGNxbxhVcccNiw8275LbZgw+dm/OUFn/h5falODjVUUUeEHfQKjrhg0OueEunUH3nGfY7akwjWvWnSjEdxG3U0UEOKCAnu4l58605Gzq4EOWRsqLWDFI22/bY6AlJ0ATHOCR6XlcgogCruRx6dgDo6BGvYQQY1cazfu3p9atUlxxT0YxnXcQ2/o4I8yvjSx+ZdsYI9ucjbNj2rx3UMY9O+ryy67bKGX3R42hEnjXnIIr4xJvE3LuH7WCqSw1HUsOAfq96QdU63j+SdUTbrBhLUHJTzg7Ki4ELsHhlNVJHBiIMOOatTnwSRYYeVHEMT2n3WMqoZizZ8pmm/BWKxLQXbHlCxjkfUDGs98yeqUluoAf8DkrzrAnZsWyMAAAAASUVORK5CYII='        
Components.utils.import("resource://gre/modules/AddonManager.jsm");
var box_enable= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "groupbox");
var box_disable= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "groupbox");
var box_false= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "groupbox");
var THIS=this
AddonManager. getAddonsByTypes
(
        ["extension"],
        function (extensions)
        {
            var arr_enable = new Array();
            var arr_disable = new Array();
            var arr_false = new Array();
            var e=extensions
            for (var i = 0; i < extensions. length; i++)
                {
                    if(e[i].userDisabled==true)
                        {
                            arr_disable.push(e[i])
                        }
                    else
                        {
                            arr_enable.push(e[i])
                        }
                    if(e[i].appDisabled==true)
                        {
                            arr_false.push(e[i])
                        }    
                }
            if(!(arr_disable.length==0))
                {
                    arr_disable. sort
                    (
                    function (a, b, c, d)
                        {
                            return a.name  > b.name;
                        }
                    );
                }    
            if(!(arr_enable.length==0))
                {
                    arr_enable. sort
                    (
                    function (a, b, c, d)
                        {
                            return a.name  > b.name;
                        }
                    );
                }    
            if(!(box_false.length==0))
                {
                    arr_enable. sort
                    (
                    function (a, b, c, d)
                        {
                            return a.name  > b.name;
                        }
                    );
                }        
            var sub_box=    box_0.getElementsByClassName ("add_on")[0]
            
            var Node=sub_box.firstChild.firstChild .firstChild ;
            var boxx=    box_0.getElementsByClassName ("Enable_")[1]    
            var boxx2=    box_0.getElementsByClassName ("Disable_")[1]    
            var boxx3=    box_0.getElementsByClassName ("False_")[1]    
            Node.setAttribute("value",Node.getAttribute("value")+'/'+arr_enable. length)
            Node.setAttribute("style",'color:#FF6600;font-family:monospace;font-weight:lighter;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#6633FF;')
            Node.nextSibling .setAttribute("value",Node.nextSibling .getAttribute("value")+'/'+arr_disable. length)
            Node.nextSibling .setAttribute("style",'font-family:monospace;border-bottom-color:#000000;border-bottom-style:solid;border-bottom-width:1px;')
            Node.nextSibling .nextSibling.setAttribute("value",Node.nextSibling .nextSibling.getAttribute("value")+'/'+arr_false. length)
            Node.nextSibling .nextSibling.setAttribute("style",'font-family:monospace;border-bottom-color:#000000;border-bottom-style:solid;border-bottom-width:1px;')
            for (var i = 0; i < arr_enable. length; i++)
            {
                var xul=THIS. xul_()
                var b_=xul.lastChild
                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                menuItem. setAttribute ("src",arr_enable[i]. iconURL);
                menuItem. setAttribute ("label",arr_enable[i]. name);
                menuItem. setAttribute ("id_",arr_enable[i]. id);
                b_.lastChild.setAttribute("label","open")
                b_.firstChild .setAttribute("label","on/of")
                b_.firstChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="Disabled_";tqa.but_(event,class_)');
                b_.firstChild.nextSibling.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="_";tqa.but_(event,class_)');
                b_.lastChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.open_(event)');
                
                if (arr_enable[i]. iconURL)
                    {                        
                       menuItem. setAttribute ("src",arr_enable[i]. iconURL);
                    }
                else
                    {
                        menuItem. setAttribute ("src",iconURL);
                    }
                if (arr_enable[i]. optionsURL)
                    menuItem.setAttribute('oncommand', "window. openDialog ('" + arr_enable[i]. optionsURL + "', '', 'chrome,dialog=0,resizable,titlebar,toolbar,centerscreen');");
                 boxx. appendChild (xul)
            }
            for (var i = 0; i < arr_disable. length; i++)
            {
                var xul=THIS. xul_()
                var b_=xul.lastChild
                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                menuItem. setAttribute ("label",arr_disable[i]. name);
                menuItem. setAttribute ("id_",arr_disable[i]. id);
                b_.lastChild.setAttribute("label","open")
                b_.firstChild .setAttribute("label","on/of")
                b_.firstChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="Disabled_";tqa.but_(event,class_)');
                b_.firstChild.nextSibling.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="_";tqa.but_(event,class_)');
                b_.lastChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.open_(event)');
                
                if (arr_disable[i]. iconURL)
                    {                        
                       menuItem. setAttribute ("src",arr_disable[i]. iconURL);
                    }
                else
                    {
                        menuItem. setAttribute ("src",iconURL);
                    }
                if (arr_disable[i]. optionsURL)
                    menuItem.setAttribute('oncommand', "window. openDialog ('" + arr_disable[i]. optionsURL + "', '', 'chrome,dialog=0,resizable,titlebar,toolbar,centerscreen');");
                 boxx2. appendChild (xul)
            }
            for (var i = 0; i < arr_false. length; i++)
            {
                var xul=THIS. xul_()
                var b_=xul.lastChild
                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                menuItem. setAttribute ("label",arr_false[0]. name);
                menuItem. setAttribute ("id_",arr_false[0]. id);
                b_.lastChild.setAttribute("label","open")
                b_.firstChild .setAttribute("label","on/of")
                b_.firstChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="Disabled_";tqa.but_(event,class_)');
                b_.firstChild.nextSibling.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="_";tqa.but_(event,class_)');
                b_.lastChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.open_(event)');
                
                if (arr_false[i]. iconURL)
                    {                        
                       menuItem. setAttribute ("src",arr_false[i]. iconURL);
                    }
                else
                    {
                        menuItem. setAttribute ("src",iconURL);
                    }
                boxx3. appendChild (xul)
            }
        }
    )    
 
this. but_=function (event,class_) 
{
    var id= event. originalTarget.parentNode.previousSibling.firstChild. getAttribute ("id_")
    Components.utils.import("resource://gre/modules/AddonManager.jsm");
    AddonManager.getAllAddons
    (
        function(addons) 
            {                    
                for (var i = 0; i < addons. length; i++)
                {
                    if(addons[i].id==id)
                        {
                            if(class_=='Disabled_')
                                {
                                    
                                    addons[i].userDisabled = !addons[i].userDisabled;
                                }
                            if(class_=='_')
                                {
                                    addons[i].uninstall();
                                }
                            if(class_=='st_')
                                {
                                    window. openDialog ('chrome://stylish/content/edit.xul', addons[i].name, 'chrome,dialog=0,resizable,titlebar,toolbar,centerscreen;',addons[i])
                                }    
                        }
                    }            
                }
            );    
}

this.open_=function(event){
var id= event. originalTarget.parentNode.previousSibling.firstChild. getAttribute ("id_")
var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).
    get("ProfD", Components.interfaces.nsIFile);
file.append("extensions");
file.append(id);
var tr=file.exists()
if(tr==true)
    {
        let nsLocalFile = Components.Constructor("@mozilla.org/file/local;1",
                                           "nsILocalFile", "initWithPath");                                           
        new nsLocalFile(file.path).reveal();
    }
else
    {
        var id=id+'.xpi'
        var file = Components.classes["@mozilla.org/file/directory_service;1"].
            getService(Components.interfaces.nsIProperties).
            get("ProfD", Components.interfaces.nsIFile);
        file.append("extensions");
        file.append(id);
        var local = Components.classes["@mozilla.org/file/local;1"].
            createInstance(Components.interfaces.nsILocalFile);
        var process = Components.classes["@mozilla.org/process/util;1"].
            createInstance(Components.interfaces.nsIProcess);
        var args = [file.path]
        local.initWithPath("e:\\pro\\WinRAR\\WinRAR.exe");
        process.init(local);
        process.run(false, args, args.length);
    }}

 

var boxx=    box_0.getElementsByClassName ("theme_")[0]
AddonManager. getAddonsByTypes
(
        ["theme"],
        function (addons)
        {
            var box= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "vbox");
            var box__= document.createElementNS ("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "groupbox");
            for (var i = 0; i < addons. length; i++)
                {
                    if(!(addons[i].id.slice(addons[i].id.length-21)=='@personas.mozilla.org'))
                        {
                            if(addons[i].isActive)
                                {
                                    var xul=THIS. xulFavSel()
                                    var b_=xul.lastChild.previousSibling
                                    var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                    menuItem. setAttribute ("label",addons[i]. name);
                                    menuItem. setAttribute ("id_",addons[i]. id);
                                    b_.firstChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="_";tqa.but_(event,class_)');
                                    
                                    if (addons[i]. iconURL)
                                        {                        
                                            menuItem. setAttribute ("src",addons[i]. iconURL);
                                        }
                                    else
                                        {
                                            menuItem. setAttribute ("src",iconURL);
                                        }
                                    
                                    box. appendChild (xul)                                     
                                }
                            else
                            {
                                var xul=THIS. xul_()
                                var b_=xul.lastChild
                                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                                menuItem. setAttribute ("label",addons[i]. name);
                                menuItem. setAttribute ("id_",addons[i]. id);
                                b_.lastChild.setAttribute("label","open")
                                b_.firstChild .setAttribute("label","on/of")
                                b_.firstChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="Disabled_";tqa.but_(event,class_)');
                                b_.firstChild.nextSibling.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="_";tqa.but_(event,class_)');
                                b_.lastChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');tqa.open_(event)');                
                                if (addons[i]. iconURL)
                                {                        
                                    menuItem. setAttribute ("src",addons[i]. iconURL);
                                }
                                else
                                {
                                    menuItem. setAttribute ("src",iconURL);
                                }
                            
                                if (addons[i] .userDisabled)
                                {                        
                                    box__. appendChild (xul)        
                                }
                                else
                                {
                                    box. appendChild (xul)
                                }    
                            }
                                    
                        }
                
                }
            boxx. appendChild (box)    
            box. appendChild (box__)    
        }
)    



            

var st_e=    box_0.getElementsByClassName ("st_e")[0]
var st_d=    box_0.getElementsByClassName ("st_d")[0]    
AddonManager. getAddonsByTypes
(
        ["userstyle"],
        function (addons)
        {
            for (var i = 0; i < addons. length; i++)
            {
                var xul=THIS.  xul_()
                var b_=xul.lastChild
                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                menuItem. setAttribute ("src",addons[i]. iconURL);
                menuItem. setAttribute ("label",addons[i]. name);
                menuItem. setAttribute ("id_",addons[i]. id);
                b_.lastChild.setAttribute("label","edit")
                b_.firstChild .setAttribute("label","on/of")
                b_.firstChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="Disabled_";tqa.but_(event,class_);tqa.st_(event);');
                b_.firstChild.nextSibling.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="_";tqa.but_(event,class_);tqa.st_(event);');
                b_.lastChild.setAttribute('oncommand','var tqa = document.getElementById('+'"'+val+'"'+');var class_="st_";tqa.but_(event,class_)');
                var menuItem =xul. getElementsByTagName ("menuitem") [0];
                if (addons[i]. iconURL)
                {                        
                    menuItem. setAttribute ("src",addons[i]. iconURL);
                }
                else
                {
                    menuItem. setAttribute ("src",iconURL);
                }
                if (addons[i] .userDisabled)
                {                        
                    menuItem.setAttribute("disabled","true")
                    st_d. appendChild (xul)
                }
                else
                {
                    menuItem.setAttribute("disabled","false")
                    st_e. appendChild (xul)
                }
                                     
            }
                                
        }
)
this. st_=function (event) 
{
    
    var m= event. originalTarget.parentNode.previousSibling.firstChild
    var obj= event. originalTarget.parentNode.parentNode
    var b= event. originalTarget.parentNode.parentNode.parentNode
    
    if(m.getAttribute("disabled")=='true')
    {
        
        b.previousSibling .previousSibling .  appendChild (obj)
        m.setAttribute("disabled","false")
        
    }
    else
    {
        m.setAttribute("disabled","true")
        b.nextSibling .nextSibling. appendChild (obj)
    }
}    
                        
this. type = "menu-button";
this.orient = "horizontal";
this. appendChild (menupopup);
menupopup.appendChild (box_0);

Отредактировано Ste_pan (30-01-2012 14:59:29)

Отсутствует

 

№356330-01-2012 13:37:16

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 12.0

Re: Custom Buttons

Ste_pan
У меня на [nightly] не работает.

Отсутствует

 

№356430-01-2012 13:42:27

Ste_pan
Участник
 
Группа: Members
Откуда: приморский край п.сибирцево
Зарегистрирован: 13-02-2011
Сообщений: 63
UA: Firefox 7.0

Re: Custom Buttons

писал под фокса не знаю

Добавлено 30-01-2012 13:46:10
на девятке тоже работает

Отредактировано Ste_pan (30-01-2012 13:46:10)

Отсутствует

 

№356530-01-2012 13:58:32

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 12.0

Re: Custom Buttons

Ste_pan пишет

писал под фокса не знаю

Так и у меня Firefox,  только 11 и 12 :) и на обоих не работает.

Отсутствует

 

№356630-01-2012 15:01:55

Ste_pan
Участник
 
Группа: Members
Откуда: приморский край п.сибирцево
Зарегистрирован: 13-02-2011
Сообщений: 63
UA: Firefox 7.0

Re: Custom Buttons

mserv пишет
Ste_pan пишет

писал под фокса не знаю

Так и у меня Firefox,  только 11 и 12 :) и на обоих не работает.

поставил себе тоже 11-12 все работает
.......немного код поправил щас попробуй

Отсутствует

 

№356730-01-2012 16:09:51

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 12.0

Re: Custom Buttons

Ste_pan пишет

.......немного код поправил щас попробуй

У меня не работает.

Отсутствует

 

№356830-01-2012 16:48:02

Lenya1995
Участник
 
Группа: Members
Зарегистрирован: 20-03-2009
Сообщений: 40
UA: Nightly 12.0

Re: Custom Buttons

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

Отсутствует

 

№356930-01-2012 19:34:09

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Ste_pan пишет

.......немного код поправил щас попробуй

У меня тоже не работает на FF9.

Выделить код

Код:

Ошибка: Application.prefs.get("lightweightThemes.isThemeSelected") is null
Источник: chrome://custombuttons/content/button.js?windowId=Firefox&id=custombuttons-button18@init
Строка: 1

Если будешь добавлять в кнопку функцию поиска обновлений дополнений как просит Lenya1995, то может пригодится этот код:

Выделить код

Код:

var obj =
{
    notification: "addons-background-update-complete",
    prefName: "extensions.update.enabled",
    extsUpdateEnabled: true,
    
    get os ()
    {
        return Cc ["@mozilla.org/observer-service;1"]. getService (Ci. nsIObserverService);
    },
    
    run: function ()
    {
        Cu. import ("resource://gre/modules/AddonManager.jsm", this);
        this. extsUpdateEnabled = cbu. getPrefs (this. prefName);
        cbu. setPrefs (this. prefName, true);
        this. os. addObserver (this, this. notification, false);
        this. AddonManagerPrivate. backgroundUpdateCheck ();
    },
    
    observe: function (s, t, d)
    {
        if (t == this. notification)
        {
            this. os. removeObserver (this, this. notification);
            cbu. setPrefs (this. prefName, this. extsUpdateEnabled);
            gBrowser. selectedTab = gBrowser. addTab ("about:addons");
            LOG ("done");
        }
    }
};

obj. run ();

запускает поиск обновлений, после завершения обновления открывает вкладку about:addons и переключается на неё.

Отредактировано bunda1 (30-01-2012 19:56:34)

Отсутствует

 

№357030-01-2012 22:01:09

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 9.0
Веб-сайт

Re: Custom Buttons

Abricosio пишет

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

Возможно я ошибаюсь, но мне кажется, это можно сделать вообще без расширений, через userContent.css.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№357130-01-2012 22:28:07

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Nightly 12.0

Re: Custom Buttons

Anton

Выделить код

Код:

@-moz-document url-prefix(http://forum.mozilla-russia.org){
A[href="http://custombuttons.mozdev.org/"] {
    color: red !important; }
}

глянь с этим стилем на ссылку под своим аватаром.


mzfx

Отсутствует

 

№357230-01-2012 22:36:50

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 9.0
Веб-сайт

Re: Custom Buttons

iDev.Pi

Ага, спасибо.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№357331-01-2012 20:58:26

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

mserv пишет

Обнаружил баг в кнопке Toggle  Find+3. При наборе текста с клавиатуру курсор исчезает с Find bar после ввода каждой буквы, приходится его постоянно возвращать, иначе происходит просто замещение букв.

Спасибо за баг :)

Toggle  Find+3

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

Выделить код

Код:

//настройка функций кликов мыши(Mouse Click settings)...................................................
this.onclick = function(event)
{
    if(event.button == 0) 
    {
        // Действие при клике ЛКМ
        gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
        if (!gFindBar.hidden)
        {
        if ((gFindBar._findField.value)==''){Find(event)}
        else
          {
          Highlight(event);
          gFindBar.onFindAgainCommand(event.detail = 0);
          }
        } 
    }
    else if(event.button == 1) 
    {
        // Действие при клике СКМ
        gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
        goDoCommand("cmd_selectNone");
        goDoCommand("cmd_paste"); 
    }
};


//настройки языка(language settings)...................................................
var cb=custombuttons,self=this,lang=cb.getPref("general.useragent.locale");
lang = lang.replace("-", "_");
function l(str) {

    self.properties = {
    en_US:{     
      Label:       "Search with in a webpage",
      Left:        'L: Toggle Find Bar',
      Middle:      'M: Search for a page from the clipboard',
      Right:       'R: Menu + CB menu',
      Sec:         ' seconds',
      AutoClose:   'Auto close',
      CloseTimer:  '   Close Timer ',
      FindBarMini: 'FindBar mini',
      FindInMenu:  'Find in the context menu',
      PrefValue:   'AutoHighlight, add text',
      ClearPref:   'AutoHighlight, clear',
      AutoHighlight: 'AutoHighlight',
      },
    
    ru:{     
      Label:       "Поиск по странице",
      Left:        'Л: Показать - скрыть поиск по странице',
      Middle:      'С: Поиск по странице из буфера обмена',
      Right:       'П: Mеню + CB меню',
      Sec:         ' секунд',
      AutoClose:   'Автоматически закрыть',
      CloseTimer:  '   Закрыть через ',
      FindBarMini: 'FindBar мини',
      FindInMenu:  'Find в контекстном меню',
      PrefValue:   'Добавить текст',
      ClearPref:   'Сбросить текст', 
      AutoHighlight: 'Автовыделение',    
      }    
  };
  var tstr = cb.getLocalString(self, str);

  // Operations to handle replacements
  if (tstr.match(/[%]\w{1}/g)) {
    lang = (typeof self.properties[lang] != "undefined") ? lang : "en_US";
    for(prop in self.properties[lang]) {
      if ((prop.match(/[_]\w{1}$/)) && ((prop.substr(prop.lastIndexOf("_")+1)) == (tstr.substring(tstr.indexOf("%")+1, tstr.indexOf("%")+4)))) {
        var tok = tstr.substring(tstr.indexOf("%"), tstr.indexOf("%")+4);
        tstr = tstr.replace(tok, l(prop));
      }
    }
  }
  return tstr;
}

  
//переключения языка подсказки (switch tooltip language)
//подсказка.............................................................................
this.showTFinfo = function() {
  
     //getting prefs Unicode value
     var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
     var Val = "\n\n"+ l("AutoHighlight") +": "+ prefs.getComplexValue("FindBar.Highlight.value",
     Components.interfaces.nsISupportsString).data;
     //обрезать подсказку для "Автовыделение"
     var HValue = Val.substring(0,100);
     var HDots = "";
     if (Val.length > 100){var HDots = '.......'; };
      //....
     this.tooltipText = l("Label") +"\n" + l("Left") +"\n" +l("Middle") +"\n"+ l("Right") + HValue + HDots;
}
this.setAttribute("onmouseover", "this.showTFinfo()");



//проверить наличие строк в about:config и создать если не существует(Add preferences)........................................
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
if (custombuttons.getPrefs("FindBar.version") !== '3')
{   
    prefs.setCharPref("FindBar.version", "3");
    prefs.setBoolPref("FindBar.Highlight", true);
    prefs.setCharPref("FindBar.Highlight.value", "Firefox");
    prefs.setBoolPref("FindBar.contextFindWords", true);
    prefs.setBoolPref("FindBar.DblclickClose", true);
    prefs.setCharPref("ui.textHighlightBackground", "#ef0fff");//http://coloria.net/bonus/colornames.htm
  //prefs.setCharPref("ui.textHighlightForeground", "#000000");//http://coloria.net/bonus/colornames.htm
    prefs.setBoolPref("FindBar.mini", false);
    prefs.setBoolPref("FindBar.auto_Close", false);
    prefs.setCharPref("FindBar.CloseTimer", "7");//7 сек(7 sec)
    prefs.setCharPref("FindBar.AutohighlightNum", "3");
};




//настройка меню(CB menu settings)...................................................
//Объявляем 'storage' 'this_'...
storage = globalStorage[document.domain];
var this_ = this;
//изменить нужный пункт меню(toggle menuitems)
//переключаем настройки в about:config(toggle preference)
this.CBlabel = function (mi, id)
{
//Автоматически закрыть(FB auto close)....
if(!id || id == "FBClose") {
//переключаем настройки в about:config
togglePref("FindBar.auto_Close");
//изменить нужный пункт меню
var label = custombuttonsUtils. getPrefs ("FindBar.auto_Close", true)
        ? '● ' + l("AutoClose")
        : '   ' + l("AutoClose");
    storage['FBClose'] = label;
    if(mi)
        mi.label = label;
};

//FB auto close timer.....
if(!id || id == "CloseTimer") {
(function () {
//Стоп, при инициализации кнопки
if (!id) return;
//switch auto close timer
    var HTTP = "";
    var URL = custombuttons.promptBox(l("AutoClose"), l("CloseTimer")+custombuttons.getPrefs("FindBar.CloseTimer") + l("Sec"), HTTP);
    if (URL[0] == false) return;
    else
    var timer = [URL[1]];
//переключаем настройки в about:config(toggle preference)
prefs.setCharPref("FindBar.CloseTimer", timer);
})();
//изменить нужный пункт меню
var label = l("CloseTimer")+ custombuttons.getPrefs("FindBar.CloseTimer") + l("Sec");
     storage['CloseTimer'] = label; 
     if(mi)
        mi.label = label;
};

//FindBar.mini......
if(!id || id == "FBmini") {
//переключаем настройки в about:config
togglePref("FindBar.mini");
//Запускаем функцию fmini(run fmini)
if (id) fmini(event);
//изменить нужный пункт меню
var label = custombuttonsUtils. getPrefs ("FindBar.mini", true)
        ? '● ' + l("FindBarMini")
        : '   ' + l("FindBarMini");
    storage['FBmini'] = label;
    if(mi)
        mi.label = label;
};

//Find в контекстном меню(Find in the context menu).....
if(!id || id == "FindInMenu") {
// переключаем настройки в about:config
togglePref("FindBar.contextFindWords");
//изменить нужный пункт меню
var label = custombuttonsUtils. getPrefs ("FindBar.contextFindWords", true)
        ? '● ' + l("FindInMenu")
        : '   ' + l("FindInMenu");
    storage['FindInMenu'] = label;
    if(mi)
        mi.label = label;
};

//Автовыделение, добавить текст(Auto Highlight, add text)..... 
if(!id || id == "AddText") {
//Запускаем функцию HighlightAdd(run function HighlightAdd)
if (id) HighlightAdd(event);
//изменить нужный пункт меню(toggle menuitems)
var label = custombuttonsUtils. getPrefs ("FindBar.Highlight.value")
        ? '   ' + l("PrefValue")
        : '   ' + l("PrefValue");
    storage['PrefValue'] = label;
    if(mi)  
        mi.label = label;
};

//Автовыделение, сбросить .....
if(!id || id == "Clear") {
//сбросить настройки в about:config
if (id) prefs.setCharPref("FindBar.Highlight.value", ""); 
//Запускаем функцию Highlight(run function Highlight)
if (id) Highlight(event);
//всплывающая подсказка
if (id) custombuttons.alertSlide(l("ClearPref"),'????');
//изменить нужный пункт меню(toggle menuitems)
var label = custombuttonsUtils. getPrefs ("FindBar.Highlight.value")
        ? '   ' + l("ClearPref")
        : '   ' + l("ClearPref");
    storage['ClearPref'] = label;
    if(mi)  
        mi.label = label;
};

//Автовыделение(Switch, Auto Highlight).....
if(!id || id == "SwitchHighlight") {
// переключаем настройки в about:config
togglePref("FindBar.Highlight");
//Изменить иконку кнопки
if (id) ToggleImage(event);
//переключить кнопку 'Highlight'(toggle Highlight)
if (id) document.getElementById('FindToolbar').getElement('highlight').removeAttribute("checked");
//Запускаем функцию Highlight(run function Highlight)
if (id) Highlight(event);
//изменить нужный пункт меню(toggle menuitems)
var label = custombuttonsUtils. getPrefs ("FindBar.Highlight", true)
        ? '● ' + l("AutoHighlight")
        : '   ' + l("AutoHighlight");
    storage['AutoHighlight'] = label;
    if(mi)  
        mi.label = label;
}; 

//переключаем настройки в about:config(toggle preference)....
function togglePref(s){
//Стоп, при инициализации кнопки
if (!id) return;
//переключаем настройки
custombuttons.setPrefs(s, !custombuttons.getPrefs(s));
}
 };
//Запускаем функцию CBlabel(run CBlabel).........
this.CBlabel();


//пункти меню(Our menu items) ....
this.ss = [
  { label: storage['FBClose'], cmd: 'document.popupNode.CBlabel(this, "FBClose")', sItemId: ''},
  { label: storage['CloseTimer'], cmd: 'document.popupNode.CBlabel(this, "CloseTimer")', sItemId: ''},
  { label: "separator", sItemId: ''},
  { label: storage['FBmini'], cmd: 'document.popupNode.CBlabel(this, "FBmini")', sItemId: ''},
  { label: storage['FindInMenu'], cmd: 'document.popupNode.CBlabel(this, "FindInMenu")', sItemId:''},
  { label: "separator", sItemId: ''},
  { label: storage['AutoHighlight'], cmd: 'document.popupNode.CBlabel(this, "SwitchHighlight")', sItemId: ''},
  { label: storage['PrefValue'], cmd: 'document.popupNode.CBlabel(this, "AddText")', sItemId: ''},
  { label: storage['ClearPref'], cmd: 'document.popupNode.CBlabel(this, "Clear")', sItemId: ''}];

 
// Our Initialization function for creating the context menu, setting up menuitems and telling
var Cb = custombuttons;
this.mObj = Cb.getCbContextObj(this);
this.init = function(x) {
  x.mObj.setSub();
  var nItem = {}, mItem = {};
  document.getElementById(CB2const.sCBCtxtMenu).setAttribute("oncommand", "event.stopPropagation()");
  for(var i in x.ss) {
    nItem = new x.mObj.getItem();
    nItem.id = 'Note';
    nItem.label = x.ss[i].label;
    if (nItem.label == "separator") {
        nItem = document.createElement("menuseparator");
      }
    nItem.value = String(i);
    mItem = x.mObj.insertBefore(nItem , x.mObj.oMenu.lastChild);
    this.ss[i].sItemId = mItem.id;
    mItem.setAttribute('oncommand',x.ss[i].cmd)
    mItem.setAttribute("style", "margin-left: -14px;");
     //....
    var CCsubCall = document.getElementById("custombuttons-contextpopup-subCall");
    CCsubCall.setAttribute("style", "margin-left: -4px;");
  }
  x.mObj.getItem();
  nItem = x.mObj.getItem();
  nItem.id = 'Note';
  this.separator = x.mObj.insertBefore( nItem , x.mObj.oMenu.lastChild);
}
this.init(this);




//Стоп, при открытии настройки панелей....................................................
this.onDestroy = function(reason) {
  storage = globalStorage[document.domain]
  //....
  if (reason == "constructor") storage['run'] = 'stop'
  if (reason == "destructor")  delete storage['run']
  if (reason == "update") storage['run'] = 'stop'
}
storage = globalStorage[document.domain];
if (storage['run']== 'stop') return;



//Findbar, установить и удалить атрибут 'mini'(Findbar, set and remove attribute 'mini')...........
//Findbar, установить и удалить  'hits'(Findbar, set and remove  'hits')...........
function fmini(event){
//FindBar, auto find 
if (!gFindBar.hidden)
{
//Find
gFindBar.onFindCommand();
}
var findToolbar = document.getElementById("FindToolbar");
var HighBut = document.getAnonymousElementByAttribute( gFindBar, "anonid", "highlight");
if (custombuttonsUtils. getPrefs ("FindBar.mini", true))
{
//...
var highlightBtn = document.getElementById('FindToolbar').getElement('highlight');
if (highlightBtn.checked)
{
gFindBar._findField.style.color = prefs.getCharPref("ui.textHighlightBackground");
};
findToolbar.setAttribute("mini", "true");
storage['hits'] = ' ';
HighBut.setAttribute("tooltiptext", "L = Find, R = Clear");
}
else
{
findToolbar.removeAttribute("mini")
storage['hits'] = ' hits';
HighBut.setAttribute("tooltiptext", "Highlight");
//...
gFindBar._findField.style.color = "black";
}
//Findbar, убрать фокус(Findbar, hide focus) 
_content.focus();
  };
//Запускаем функции fmini(Run the function fmini)  
setTimeout(function() {fmini(event);}, 150)



//Изменить иконку кнопки.................................................................
function ToggleImage(event){
// toggle button image
if (custombuttonsUtils. getPrefs ("FindBar.Highlight", true))
{
this_.image="data:image/x-icon;base64,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";
}
else
{
this_.image="data:image/x-icon;base64,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";
}
  };
ToggleImage(event); 




//find bar сверху (move find bar to the top)................................................
XPCOMUtils.defineLazyGetter(window, "gFindBar", function() {
  let XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  let findbar = document.createElementNS(XULNS, "findbar");
  findbar.setAttribute("browserid", "content");
  findbar.id = "FindToolbar";
  gBrowser.parentNode.insertBefore(findbar, gBrowser);

  // Force a style flush to ensure that our binding is attached.
  findbar.clientTop;
  window.gFindBarInitialized = true;
  return findbar;
});





//find bar, показать количество совпадений(find bar,show the number of matches)...@author slimx.................
(function() {
    //add label to findbar
    var status = document.getAnonymousElementByAttribute(gFindBar, 'anonid', 'match-case-status');
    var sep = document.createElement("toolbarspacer");
    var count = document.createElement("label");
    count.hidden = true;
    status.parentNode.insertBefore(sep, status);
    status.parentNode.insertBefore(count, status);//findbar-container


    gFindBar.__proto__._foundMatches = count;
    
    gFindBar.__proto__._updateMatchesCount = function(aRes) {
        if (!this._updateMatchCountTimeout)
            window.clearTimeout(this._updateMatchCountTimeout);
        this._updateMatchCountTimeout =
                window.setTimeout(function(aRes, aSelf) {
                    aSelf._updateMatchesCountWorker(aRes);
                }, 0, aRes, this);
    }

    gFindBar.__proto__._updateMatchesCountWorker = function(aRes) {
        var word = this._findField.value;
        if (aRes == this.nsITypeAheadFind.FIND_NOTFOUND || !word) {
            this._foundMatches.hidden = true;
            this._foundMatches.value = "";
        }
        else {
            var matchesCount = this._countMatches(word).toString();
                if (matchesCount != "0") {
                if (matchesCount == "1")
                    this._foundMatches.value = matchesCount + storage['hits'];
                else if (matchesCount == "-1") {
                    var matchLimit = 100;
                    this._foundMatches.value = " \>"+ matchLimit + storage['hits'];
                    //                    var key = (matchLimit > 1000) ? "Decrease" : "Increase";
                } else
                    this._foundMatches.value = matchesCount + storage['hits'];
                this._foundMatches.hidden = false;
                //Findbar, удалить атрибут 'red'(Findbar, remove attribute 'red').............. 
                var findToolbar = document.getElementById("FindToolbar");
                findToolbar.removeAttribute("red");
            }
            else {
                this._foundMatches.hidden = true;
                this._foundMatches.value = "";
                
                //Findbar, установить атрибут 'red'(Findbar, set attribute 'red')...............
                var findToolbar = document.getElementById("FindToolbar");
                findToolbar.setAttribute("red", "true");
             }

            window.clearTimeout(this._updateMatchCountTimeout);
            
        }
    }

    gFindBar.__proto__._countMatches = function(aWord, aWindow) {
        var win = aWindow || this.browser.contentWindow;

        var countFound = 0;
        for (var i = 0, count; win.frames && i < win.frames.length; i++) {
            if ((count = this._countMatches(aWord, win.frames[i])) != -1)
                countFound += count;
            else
                return count;
        }

        var doc = win.document;
        if (!doc || !(doc instanceof HTMLDocument))
            return countFound;

        var body = doc.body;

        var count = body.childNodes.length;
        var searchRange = doc.createRange();
        var startPt = doc.createRange();
        var endPt = doc.createRange();

        searchRange.setStart(body, 0);
        searchRange.setEnd(body, count);

        startPt.setStart(body, 0);
        startPt.setEnd(body, 0);
        endPt.setStart(body, count);
        endPt.setEnd(body, count);

        var retRange = null;
        var finder = Components.classes["@mozilla.org/embedcomp/rangefind;1"]
                .createInstance()
                .QueryInterface(Components.interfaces.nsIFind);

        finder.caseSensitive = this._shouldBeCaseSensitive(aWord);

        var matchLimit = 100;
        while ((retRange = finder.Find(aWord, searchRange, startPt, endPt))) {
            if (this._rangeIsVisible(retRange, win)) {
                if (this._findMode == this.FIND_LINKS) {
                    if (this._rangeStartsInLink(retRange))
                        ++ countFound;
                }
                else
                    ++ countFound;
            }
            if (countFound == matchLimit) {
                countFound = -1;
                break;
            }
            startPt = doc.createRange();
            startPt.setStart(retRange.startContainer, retRange.startOffset + 1);
        }

        return countFound;
    }

    gFindBar.__proto__._rangeIsVisible = function(aRange, aWindow) {
        var node = aRange.startContainer;

        if (node.nodeType == node.ELEMENT_NODE) {
            if (node.hasChildNodes) {
                var childNode = node.childNodes[aRange.startOffset];
                if (childNode)
                    node = childNode;
            }
        }

        while (node && node.nodeType != node.ELEMENT_NODE)
            node = node.parentNode;

        // There is no perfect way to check if a node is visible in JavaScript,
        // so use the best measures we can have
        if (node) {
            var style = aWindow.getComputedStyle(node, "");
            if (style) {
                if (style.visibility == "hidden" ||
                        style.visibility == "collapse" ||
                        style.display == "none")
                        return false;
                if (style.left != "auto" && style.width != "auto")
                    if (style.left < 0 && style.left + style.width < 0)
                        return false;
                if (style.top != "auto" && style.height != "auto")
                    if (style.top < 0 && style.top + style.height < 0)
                        return false;
            }
        }

        return true;
    }

    gFindBar.__proto__._rangeStartsInLink = function(aRange) {
        var isInsideLink = false;

        var node = aRange.startContainer;

        if (node.nodeType == node.ELEMENT_NODE) {
            if (node.hasChildNodes) {
                var childNode = node.childNodes[aRange.startOffset];
                if (childNode)
                    node = childNode;
            }
        }

        const XLink_NS = "http://www.w3.org/1999/xlink";
        do {
            if (node instanceof HTMLAnchorElement) {
                isInsideLink = node.hasAttribute("href");m
                break;
            }
            else if (typeof node.hasAttributeNS == "function" &&
                    node.hasAttributeNS(XLink_NS, "href")) {
                isInsideLink = (node.getAttributeNS(XLink_NS, "type") == "simple");
                break;
            }

            node = node.parentNode;
        } while (node);

        return isInsideLink;
    }

    //insert count function to original
    eval("gFindBar._updateCaseSensitivity=" + gFindBar._updateCaseSensitivity.toString().slice(0, -1) + "this._updateMatchesCount();}");
    eval("gFindBar._updateStatusUI=" + gFindBar._updateStatusUI.toString().slice(0, -1) + "this._updateMatchesCount();}");
})();



//FindBar, поиск колесиком мыши(FindBar, Mouse Scroll find )................................................
gFindBar.addEventListener('DOMMouseScroll', function (event){
    //Найти (Find)
    gFindBar.onFindAgainCommand(event.detail < 0);
}, false);


 

//переключить 'Поиск на странице' двойным средним кликом на странице(toggle Find Bar, if Double midlle Click in page)..........
var FBar = {

addEvList : function(event)
{
//Стоп, при открытии настройки панелей
if (storage['run'] == 'stop') return;
   
//добавляем обработчики для обработки мышиных событий на странице.......
//включена 'Использовать автоматическую прокрутку'...
gBrowser.addEventListener('click', function(event){if (custombuttonsUtils. getPrefs ("general.autoScroll", true)){FBar.clickClose(event); }}, true);

//если не включена 'Использовать автоматическую прокрутку'
gBrowser.addEventListener('dblclick', function(event){if (!custombuttonsUtils. getPrefs ("general.autoScroll", true)) FBar.clickClose(event);}, true);
},

clickClose : function(event)
{  
   
   //если нажатие на среднюю кнопку мыши
   if (1 == event.button)
   {
   //Стоп, если это 'bookmark tab','Управление дополнениями'..
   if (getBrowser().currentURI.spec == "chrome://browser/content/bookmarks/bookmarksPanel.xul") return;
   if (getBrowser().currentURI.spec == "chrome://mozapps/content/extensions/extensions.xul") return;
   var strokaadresa= gURLBar.value;
   var nsa=strokaadresa.substring(0,6);
   if (nsa=="about:") return; 
   //Стоп, если это ссылка(if link)
   var link = this.getLink(event.target);
   if(link) return;
   
   //если разрешено в настройках(about:config)
   if (custombuttonsUtils. getPrefs ("FindBar.DblclickClose", true))
   {
   //переключить 'Поиск на странице'
   gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
   if (!gFindBar.hidden){
   Highlight(event);
   gFindBar.onFindAgainCommand(event.detail = 0); };
   }
      }
},
   
clickLink : function(event)
  {
//Объявляем ссылку'Link'............
this.getLink = function(node) {
    if(!node || !node.localName)
        return null;

    const docNode = Node.DOCUMENT_NODE; // 9
    const eltNode = Node.ELEMENT_NODE; // 1
    for(node = node; node && node.nodeType != docNode; node = node.parentNode) {
        if(
            (
                node instanceof HTMLAnchorElement
                || node instanceof HTMLAreaElement
                || node instanceof HTMLLinkElement
            )
            && node.hasAttribute("href")
            || node.nodeType == eltNode && node.hasAttributeNS("http://www.w3.org/1999/xlink", "href")
        )
            return node;
    }
    return null;
  };
}   
             };
//Запускаем функцию addEvList(run function addEvList)            
FBar.addEvList(event);             
//Запускаем функцию clickLink(run function clickLink)             
FBar.clickLink(event);



//findbar очистить, кликнуть правим кликом на findbar's label-Найти: или на иконку поиска на FindBar mini(FindBar clear findText, right click on findbar's label, else Find button)..............
//findbar поиск, кликнуть левым кликом на findbar's label-Найти: или на иконку поиска на FindBar mini(FindBar find, left click on findbar's label, else Find button)..............  

      var FindButt = document.getAnonymousElementByAttribute(gFindBar, "anonid", "find-label");
      var HighBut = document.getAnonymousElementByAttribute( gFindBar, "anonid", "highlight");
      //.....     
      FindButt.setAttribute("onclick", "event.stopPropagation(); clickFind(event);");
      //.......
      HighBut.addEventListener("click", function(event){
      if (custombuttonsUtils. getPrefs ("FindBar.mini", true)){
      gFindBar.getElement("highlight").removeAttribute("checked");
      //.......
      clickFind(event);
      }
       }, true);
      //.....................
      clickFind = function(event){
      event.preventDefault();
      event.stopPropagation();
      if ( event.button == 0 )
      {
      Find(event);
      }
      else if ( event.button == 2 )
      {
      gFindBar._findField.value = '';
      gFindBar.onFindAgainCommand(false);
      //hide Highlight
      gFindBar._highlightDoc(false);
      }
        };
       
       
        
   
//Поиск по странице из буфера обмена, кликнуть средним кликом на findbar (FindBar Search for a page from the clipboard, midlle click on findbar)..
//переключить кнопку 'Highlight' двойным левым кликом на findbar............
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop') (function () {
     gFindBar.addEventListener("click", function(event){
      if ( event.button != 1 )return; 
      event.preventDefault();
      event.stopPropagation();
      this.str = readFromClipboard();
      gFindBar._findField.value = this.str;
      Highlight(event);
      gFindBar.onFindAgainCommand(event.detail = 0);
      }, true);
      
      //переключить кнопку 'Highlight'.........
      gFindBar._findField.addEventListener("dblclick", function(event){
      if ( event.button != 0 )return;
      event.preventDefault();
      event.stopPropagation()
      //....
      if (!custombuttonsUtils. getPrefs ("FindBar.mini")) return;
      if (custombuttonsUtils. getPrefs ("FindBar.Highlight")) return;
      //переключить кнопку 'Highlight'
      toggleHighlight(event);
      //Findbar, убрать фокус(Findbar, hide focus) 
      _content.focus();
      }, false);
})(); 

     
      
//FindBar, автоматически закрыть(autohide Findbar).................................
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop')(function () {

function go() {
  gFindBar.close();
  }
function on() {
  if (!custombuttonsUtils. getPrefs ("FindBar.auto_Close", true)) return;
  if (gFindBar.hidden) return;
  if (window.ACRun == 'stop') return;
  window.ACRun = 'stop';
  timeoutId = setTimeout(go, custombuttons.getPrefs("FindBar.CloseTimer") + '000')
  gFindBar.addEventListener('mouseover',off, false); 
  gFindBar.addEventListener("DOMAttrModified", Modoff, false);
  }
function Modoff() {
  if (gFindBar.hidden == false){
  off();
  }
    };
function off() {
  window.ACRun = '';
  gFindBar.addEventListener('mouseover',Modoff, false); 
  gFindBar.removeEventListener("DOMAttrModified", off, false);
  clearTimeout(timeoutId);
  }
gBrowser.addEventListener('mouseover',on, false);  
})();




//FindBar, сочетания клавиш(Key config).........................................................
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop')(function () {
window.addEventListener('keydown', function (event){

//FindBar(ctrl+ F)показать - скрыть(Toggle Find Bar).........
if (event.altKey == false)
{
if ((event.keyCode==0x46)&&(event.ctrlKey))
{
event.preventDefault();
event.stopPropagation();
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();}}

//Findbar(ctrl+ALT+F), поиск по странице из буфера обмена(find from clipboard).............
if (event.altKey == true)
{
if ((event.keyCode==0x46)&&(event.ctrlKey))
{
gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();
goDoCommand("cmd_selectNone");
goDoCommand("cmd_paste");}}

//Findbar(ctrl+ALT+H), FindBar, вести слова для выделение(set Highlight words)...
if (event.altKey == true)
{
if ((event.keyCode==0x48)&&(event.ctrlKey))
{
//Запускаем функцию HighlightAdd(run HighlightAdd) 
HighlightAdd(event);
} 
 }
  }, false);
})();



//переключить кнопку 'Highlight'(toggle Highlight)............................................
function toggleHighlight(event) {
var highlightBtn = document.getElementById('FindToolbar').getElement('highlight');
//...
if (!highlightBtn.checked)
{
highlightBtn.setAttribute("checked", "true");
gFindBar._highlightDoc(true, gFindBar._findField.value);
//..
gFindBar._findField.style.color = prefs.getCharPref("ui.textHighlightBackground");
}
else 
{
highlightBtn.removeAttribute("checked");
gFindBar._highlightDoc(false);
//..
gFindBar._findField.style.color = "black";
}
 };


//Автоматически выделить заранее введенные слова (auto Highlight words permanent)....................................................
Highlight = function(event) {

//устанавливаем флаг...
var m = true;
if (event =='[object UIEvent]'){var m = false};
if (event =='[object DragEvent]'){var m = false};

//custombuttons.alertSlide(m);
//....
var highlightBtn = document.getElementById('FindToolbar').getElement('highlight');
var FBNum = custombuttons.getPrefs("FindBar.AutohighlightNum");
//...
if (!highlightBtn.checked)
{
gFindBar._findField.style.color = "black";
}
//hide Highlight
gFindBar._highlightDoc(false);
  
//FindBar, auto find... 
if (!gFindBar.hidden)
{
   var FBvalue = gFindBar._findField.value;

  //Findbar, удалить атрибут 'red'(Findbar, remove attribute 'red')..............
  if (FBvalue.length  = 0)
  { 
   var findToolbar = document.getElementById("FindToolbar");
   findToolbar.removeAttribute("red");
  }
  //Find..... 
  if (m){
        //Findbar, фокус(Findbar, focus)
        gFindBar._findField.focus();
  
        gFindBar.onFindCommand();
    
       //Findbar, убрать фокус(Findbar, hide focus) 
       _content.focus();
      }
}
  
//auto Highlight
if (custombuttonsUtils. getPrefs ("FindBar.Highlight", true))
{
  if (gFindBar.hidden)
     {
     //getting prefs Unicode value
     var value = prefs.getComplexValue("FindBar.Highlight.value",
     Components.interfaces.nsISupportsString).data;
     };
  if (!gFindBar.hidden)
      {
      if (FBvalue.length < FBNum) return;
      var value = FBvalue;
};
//Highlight
gFindBar._highlightDoc(true, value);
}
 };   
//Стоп, при открытии настройки панелей(stop, if onDestroy)
if (storage['run'] !== 'stop') (function () {
//добавляем обработчики...
//обработчик для табов
gBrowser.tabContainer.addEventListener("TabSelect", Highlight, false);
document.addEventListener( "DOMContentLoaded", Highlight, false);
//обработчики для FindBar
gFindBar._findField.addEventListener("input", Highlight, false);
gFindBar._findField.setAttribute("ondrop","event.stopPropagation(); Find(event); ");
gFindBar.addEventListener("DOMAttrModified", function(event){
if (!gFindBar.hidden) return;
Highlight(event)}, false);
})();



//Найти на странице.................  
Find = function(event){
var sel = content.getSelection().toString();
if (sel){
if(gFindBar.hidden){gFindBar.onFindCommand();}
//Убираем пробелы с обоих концов текста....
var newstr = sel.replace(/^\s+|\s+$/g,"");
//...
gFindBar._findField.value = newstr;
Highlight(event);
gFindBar.onFindAgainCommand(event.detail = 0);
}
else
{
Highlight(event);
gFindBar.onFindAgainCommand(false);
}
  };



//FindBar. контекстного меню (context Menu).......................................
(function contextFindWords(){
// выходим, если функция уже выполнялась
    if (document.getElementById("contextFindWords")) return;
 
    const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

    var contextMenu = document.getElementById("contentAreaContextMenu");
    var separator = document.getElementById("context-sep-properties");
    var eventTarget = null;

    var menu = document.createElementNS(kXULNS, "menu");
    menu.id = "contextFindWords";
    var locale = Components.classes["@mozilla.org/preferences-service;1"]
                         .getService(Components.interfaces.nsIPrefBranch)
                         .getCharPref("general.useragent.locale");
       
    menu.setAttribute("label", locale.indexOf("ru") == -1 ? "Find" : "Find");
    //menu.setAttribute("accesskey", "i");
    menu.hidden = true;
    contextMenu.insertBefore(menu, separator);

    var menuPopup = document.createElementNS(kXULNS, "menupopup");
    menu.appendChild(menuPopup);

    var lst = [
        { 
          label:locale.indexOf("ru") == -1 ? "Find on page" : "Найти на странице",
          //accesskey:"F",
          command:ContexFind
        },
        {
          label:locale.indexOf("ru") == -1 ? "Search selected in Website" : "Поиск по сайту(google)",
          command:Search
        },
        {
          label:locale.indexOf("ru") == -1 ? "Highlight selected" : "Выделить текст на странице",
          command:HighlightSel
        },
        {
          label:locale.indexOf("ru") == -1 ? "Auto Highlight, add text" : "Автовыделение, добавить текст",
          command:addSel
        }
        ];
    
    for(var i = 0, m; m = lst[i]; i++){
        var menuItem = document.createElementNS(kXULNS, "menuitem");
        menuItem.setAttribute("label", m.label);
        menuItem.setAttribute("type", "m.radio");
        if ("accesskey" in m) menuItem.setAttribute("accesskey", m.accesskey);
        menuItem.addEventListener("command", m.command, false);
        menuItem.id = "context-Find-Words-" + m.label.toString();
        menuPopup.appendChild(menuItem);
        
    }

    contextMenu.addEventListener("popupshowing", setMenuDisplay, false);

    function setMenuDisplay(aEvent) {
        var t = content.getSelection().toString();
        if(t){
        if (custombuttonsUtils. getPrefs ("FindBar.contextFindWords", true))
        {
        document.getElementById("contextFindWords").hidden = false;
        }
        else   
        {
         document.getElementById("contextFindWords").hidden = true;
        }
              }
        else   
              {
            document.getElementById("contextFindWords").hidden = true;
              }
    }
    
     function ContexFind(){
      //Запускаем функцию Find
       Find(event);
        }
        
    function Search(){
        var focusedWindow = document. commandDispatcher. focusedWindow;
        var text = focusedWindow. getSelection (). toString ();
        var doc = getBrowser (). contentDocument;
        try { var url = doc. location. hostname; }
        catch(e)
        { var url = ""; }
          
        text = escape (convertFromUnicode ("UTF-8", text));
        url = encodeURIComponent (url);
    
        var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url;
        gBrowser.selectedTab = gBrowser.addTab(searchUrl);
        }
    
   function HighlightSel(){
        gFindBar.toggleHighlight(false);
        var text = document.commandDispatcher.focusedWindow.getSelection();
        gFindBar._highlightDoc(true, text);
        goDoCommand("cmd_selectNone");
        }
        
   function addSel(){
        //Запускаем функцию HighlightAdd 
        HighlightAdd(event);
        }     
})();

        

//Добавить текст(выделенный / из буфера обмена) для автовыделения.....................
function HighlightAdd(event){
//Копируем выделенный текст в буфер
document.getElementById("cmd_copy").doCommand();
// Get the root branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
//setting Unicode value
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
//читаем из буфера обмена
str.data = readFromClipboard();
prefs.setComplexValue("FindBar.Highlight.value", 
Components.interfaces.nsISupportsString, str);
//всплывающая подсказка
custombuttons.alertSlide(l("AutoHighlight"), str.data);
//...
goDoCommand("cmd_selectNone");
//Запускаем функцию Highlight(run Highlight) 
Highlight(event);
      };  
      


//Следим за иконкой статуса на FindBar(Monitor the find-status-icon on FindBar)......................
//Findbar, установить и удалить атрибут 'yellow'(Findbar, set and remove attribute 'yellow') 
function fflash(event){
//..
var findToolbar = document.getElementById("FindToolbar");
var findstatus = gFindBar.getElement("find-status-icon");
//..
findstatus.addEventListener("DOMAttrModified",function(e) {
if(findstatus.getAttribute("status")=="wrapped")
{
findToolbar.setAttribute("yellow", "true");
setTimeout(function() {findToolbar.removeAttribute("yellow"); }, 700);};
}, false)};
//Запускаем функции fflash, fmini(Run the function fflash)
document.addEventListener( "DOMContentLoaded", fflash(event), false);



 
// FindToolbar стиль(style).......................................................................
(function(css) {
      var pi = document.createProcessingInstruction(
      'xml-stylesheet',
      'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"'
    );
    return document.insertBefore(pi, document.documentElement);
  }
)(<![CDATA[
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

#FindToolbar:not([mini="true"]){
border-bottom: 2px solid; -moz-border-bottom-colors: ThreeDShadow ThreeDHighlight;}

#FindToolbar > .findbar-container > * { display: -moz-box !important; }
#FindToolbar > hbox > label{-moz-appearance: none !important;font-weight: bold  !important;}
#find-field,.findbar-textbox{width: 250px !important;}

#FindToolbar  label[value="(С учётом регистра)"],
#FindToolbar  label[value="(Case sensitive)"],
#FindToolbar .findbar-find-fast.findbar-find-status,
#FindToolbar .findbar-container>image
{display: none !important;}

#FindToolbar[yellow="true"] .findbar-textbox{
   -moz-box-shadow: 0 0 0 1em yellow inset !important;}
#FindToolbar[red="true"] .findbar-textbox{
   -moz-box-shadow: 0 0 0 1em red inset !important;}

#FindToolbar:not([red="true"]) .findbar-textbox[status="notfound"]{
   background: rgba(207,219,236,0.99) !important;
   color: black !important;
   -moz-box-shadow: none !important;}
   
.findbar-closebutton{list-style-image: none !important;
   background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAD2EAAA9hAHVrK90AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABVElEQVR42mL8//8/AzUBQAAxMVAZAAQQ1Q0ECCCqGwgQQCzoAvkN3Q5ACoQ/TGwonYBNE1BNAZASAOINQDUXkOUAAgibC0EKAoC4H6hxARbDQJb0Q9U8QJcHCCBGbLEM1GQApA4AMT8QJwJdsQAqngCk5gPxQyA2AIp/QNcLEECMuJIN1Ov7oVxHqBfXA/FHUJCgexUGAAKIEV86RHLRR6gQyMWOQMMO4NIDEEB4Yxnq1YVQg0C4EJ9hIAAQQHgNBLoQ5E0DJKEAQskGIIAIpUOQa/ShrrwIxPbYYh4ZAAQQEx7XLYAadhHoTVBYJkDDMh6aDrECgABiwmEYKK3FQ13lAA3PC0heBqVRrN4HCCAmHDGbD3VNAnJag0ZIIpS7AJpeUQBAADFhiQQFIG7EldagMV8IxBPQIgwMAAKIkdrlIUAAUb20AQggqhsIEEBUNxAgwAD1Mmk1Ns1bkQAAAABJRU5ErkJggg==") center no-repeat !important; }



/*Find Toolbar, mini......................................... */

#FindToolbar[mini="true"] .findbar-textbox{
   width: 16em !important; 
   height:21px!important;  
   padding-right: 20px !important;
   margin-right: 2px!important;
   margin-left:-4px!important}
   
#FindToolbar[mini="true"]{
   position: fixed;right: 17px;
   background: menu!important;
  -moz-box-shadow: 0px 10px 5px -10px rgba(0,0,0,.3) !important;
   border-radius: 0  0 8px 8px !important;border-top: none !important;
   padding-right:3px!important;}

#FindToolbar[mini="true"] .findbar-container>checkbox{
   margin-left:-24px !important;
   margin-right: -3px !important}

#FindToolbar[mini="true"]  label[class="checkbox-label"],
#FindToolbar[mini="true"]  toolbarbutton.findbar-find-next, 
#FindToolbar[mini="true"]  toolbarbutton.findbar-find-previous,
#FindToolbar[mini="true"] .findbar-highlight label,
#FindToolbar[mini="true"] .findbar-closebutton,
#FindToolbar[mini="true"] .findbar-find-fast[anonid="find-label"],
#FindToolbar[mini="true"] .findbar-find-fast[anonid="match-case-status"] 
{ display: none !important;} 


#FindToolbar[mini="true"] toolbarbutton.findbar-highlight.tabbable, #FindToolbar[mini="true"] toolbarbutton.findbar-highlight.tabbable[checked="true"]{
   -moz-appearance: none !important;
   list-style-image: none !important;
   background: url("data:image/gif;base64,R0lGODlhEAAQAMQWAJmZzJlmzGZmzGZm/2aZ/5mZ/5nM/8zM/8z//5mZmWZmmf///8yZzMzMmZlmmZmZM8zMM8zMZsz/ZsyZZpmZZmZmM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAHoAxYALAAAAAAQABAAAAVsoCUCgQCIaCoKA1G4p7q6RmEXcQoMxYEYQEMOJSAYEL+D8jC0CG6GJTKhUtiAPiSCmlK4er7FgiGzWLGIBUJRZliVCLMi0Sg7FHhq4gGJlFUNEBIQE38pExGDFIYoFIkQi4wWjhEVkiIUFQohADs=") center no-repeat !important; 
   border: 1px solid rgba(0,0,0,0.3) !important;
   height:21px !important;}

#FindToolbar[mini="true"] checkbox{ 
  -moz-box-ordinal-group: 3 !important;}
  
#FindToolbar[mini="true"] textbox.findbar-textbox{
   -moz-box-ordinal-group: 2 !important}

#FindToolbar[mini="true"] toolbarbutton.findbar-highlight{
   -moz-box-ordinal-group: 4 !important;
   margin-left:-3px !important}
   
#FindToolbar[mini="true"] .findbar-closebutton{
   -moz-box-ordinal-group: 7 !important;
}   

]]>.toString());

Отредактировано bunda1 (31-01-2012 21:06:08)

Отсутствует

 

№357431-01-2012 23:11:14

mserv
Участник
 
Группа: Members
Зарегистрирован: 15-11-2008
Сообщений: 1025
UA: Nightly 12.0

Re: Custom Buttons

bunda1 пишет

Спасибо за баг :)

Спасибо за кнопку, теперь всё ОК drinks.gif

Отсутствует

 

№357501-02-2012 19:22:02

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Обработчик DOMContentLoaded срабатывает если открыть новые таби, как это отфильтровать?

Выделить код

Код:

document.addEventListener( "DOMContentLoaded",function(aEvent){ 
//фылтр.... 
//стоп, если срабатывает на фрейме
var doc = aEvent.originalTarget; 
        var win = doc.defaultView; 
        if (win != win.top) return; 
        if (win.frameElement) return;

Highlight}, false);

Highlight = function(event) {
//.......

}

Пришлось самому решить эту проблему. :)

Выделить код

Код:

gBrowser.addEventListener("DOMContentLoaded", function(event){
if (event.target.location.href !== getBrowser().currentURI.spec) return;
Highlight(event)}, false);

Отредактировано bunda1 (01-02-2012 21:49:28)

Отсутствует

 

Board footer

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