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

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

№497611-10-2012 22:27:46

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

Re: Custom Buttons

bunda1
chrome://browser/content/nsContextMenu.js

Выделить код

Код:

// Save URL of the clicked upon image, video, or audio.
  saveMedia: function() {
    var doc =  this.target.ownerDocument;
    ...
    else if (this.onImage) {
      urlSecurityCheck(this.mediaURL, doc.nodePrincipal);
      saveImageURL(this.mediaURL, null, "SaveImageTitle", false,
                   false, doc.documentURIObject, doc);
    }

(это из Nightly, там надо еще document передавать)

Наверное, так:

Выделить код

Код:

var img = content.document.images[0];
var doc = img.ownerDocument;
urlSecurityCheck(img.src, doc.nodePrincipal);
saveImageURL(img.src, null, "SaveImageTitle", false, false, doc.documentURIObject, doc);

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

Отсутствует

 

№497711-10-2012 23:09:55

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

Re: Custom Buttons

Infocatcher
Я не верно выразился, мне бы без запроса на место сохранения. Нужно для сохранения жестом мыши.

Выделить код

Код:

var url = event.dataTransfer.getData("application/x-moz-file-promise-url");

CB easy drag and go

Выделить код

Код:

// Блокировать повторный запуск функций и обработчиков при открытии настройки панелей ..............
if (this.hasAttribute("stop")) return;

location == "chrome://browser/content/browser.xul" && (function(event) { 
        var self = arguments.callee; 
        if (!event) {
                ["dragstart", "dragover", "drop"].forEach(function(type) {
                        gBrowser.mPanelContainer.addEventListener(type, self, false);
                });
                window.addEventListener("unload", function() {
                        ["dragstart", "dragover", "drop"].forEach(function(type) {
                                gBrowser.mPanelContainer.removeEventListener(type, self, false);
                        });
                }, false);
                return;
        }
        switch (event.type) {
        case "dragstart":
                {
                        self.startPoint = [event.screenX, event.screenY];
                        self.sourceNode = event.target;
                        event.target.localName == "img" && event.dataTransfer.setData("application/x-moz-file-promise-url", event.target.src);
                        break;
                }
        case "dragover":
                {
                        self.startPoint && (Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService).getCurrentSession().canDrop = true);
                        break;
                }
        case "drop":
                {
                        if (self.startPoint && event.target.localName != "textarea" && (!(event.target.localName == "input" && (event.target.type == "text" || event.target.type == "password"))) && event.target.contentEditable != "true") {
                                event.preventDefault();
                                event.stopPropagation();
                                var [subX, subY] = [event.screenX - self.startPoint[0], event.screenY - self.startPoint[1]];
                                var [distX, distY] = [(subX > 0 ? subX : (-subX)), (subY > 0 ? subY : (-subY))];
                                var direction;
                                var t = content.getSelection().toString();
                                if (distX > distY) direction = subX < 0 ? "L" : "R";
                                else direction = subY < 0 ? "U" : "D";
                                
                                // изображения ....
                                if ( event.dataTransfer.types.contains("application/x-moz-file-promise-url")) {
                                     if ( direction == "U" ) {
                                          // Bild in neuem Tab oeffnen[rechts]
                                          gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("application/x-moz-file-promise-url").split("\n")[0]);
                                          return;
                                          }
                                     if ( direction == "D" ) {
                                          //Bild in neuem Tab oeffnen[rechts]
                                          gBrowser.addTab(event.dataTransfer.getData("application/x-moz-file-promise-url").split("\n")[0]);
                                          return;
                                          }
                                     if ( direction == "L" ) {
                                          // Bild speichern[links]
                                          saveImageURL(event.dataTransfer.getData("application/x-moz-file-promise-url"));
                                          return;
                                          } 
                                     if ( direction == "R" ) {
                                          // Bild speichern[links]
                                          var url = event.dataTransfer.getData("application/x-moz-file-promise-url")
                                          setTimeout(function() { saveImageURL(url, null, "SaveImageTitle", false, true, gBrowser.currentURI) }, 50)
                                          //saveImageURL(gContextMenu.imageURL, null, "SaveImageTitle", false, true, makeURI(doc.location.href));  
                                          return;
                                          }        
                                     }
                                     
                                // выделенный текст ....
                                else if ( getBrowserSelection() ) {
                                     if ( direction == "U" ) {
                                          //Identifizierung von Text-URLs und Oeffnen in neuem Tab[hoch]
                                          /^([a-z]+:\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&amp;]*)?)?(#[a-z][a-z0-9_]*)?$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode")));
                                          return;
                                          }     
                                     if ( direction == "D" ) {
                                          // Ausgewaehlen Text speichern[runter]
                                          saveImageURL("data:text/plain;charset=UTF-8;base64," + btoa(unescape(encodeURIComponent(event.dataTransfer.getData("text/unicode")))), event.dataTransfer.getData("text/unicode").slice(0, 5) + ".txt");
                                          return;
                                          }
                                     if ( direction == "L" ) {
                                          //Google Uebersetzung aller Sprachen ins Deutsche des ausgewaehlten Textes[links]
                                          gBrowser.selectedTab = gBrowser.addTab("http://translate.google.com/translate_t?hl=de-DE#auto|ru|"+t);
                                          return;
                                          }     
                                     if ( direction == "R") {
                                          //Ausgewaehlten Text mit Google suchen[rechts]
                                          gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=" + t);
                                          return;
                                          }
                                     }
                                      
                                // ссылки ....
                                else if ( event.dataTransfer.types.contains("text/x-moz-url")) {
                                     if ( direction == "U" ) {
                                          // Link in neuem Tab oeffnen[alle Seiten]
                                          gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
                                          return;
                                          }
                                     if ( direction == "D" ) {
                                          // Link in neuem Tab oeffnen[alle Seiten]
                                          gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
                                          return;
                                          }
                                }
                                self.startPoint = 0;
                        }
                }
        }
})()


// устанавливаем флаг, чтобы функции и обработчики не исполнялась дважды  
this.setAttribute("stop","true");

Отредактировано bunda1 (11-10-2012 23:11:43)

Отсутствует

 

№497812-10-2012 00:16:07

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

Re: Custom Buttons

bunda1 пишет

мне бы без запроса на место сохранения

А кто будет расширение файла угадывать?

Видимо, нужна функция internalSave() из chrome://global/content/contentAreaUtils.js.
Вроде, так работает:

Выделить код

Код:

var url = "http://img.yandex.net/i/www/logo.png";

var fileName = "test";
var targetFile = Components.classes["@mozilla.org/file/local;1"]
    .createInstance(Components.interfaces.nsILocalFile || Components.interfaces.nsIFile);
targetFile.initWithPath("D:\\" + fileName);

internalSave(
    url,
    content.document,
    fileName,
    null,
    null,
    false,
    "SaveImageTitle",
    {
        file: targetFile,
        uri: makeURI(url)
    },
    content.document.documentURIObject,
    true,
    null
);

Вместо content.document, скорее всего, можно использовать event.view.document.


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

Отсутствует

 

№497912-10-2012 18:23:37

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 16.0

Re: Custom Buttons

Можно ли сделать замену Hostname in Titlebar?
Уже нашел замену - KeePass AutoType Enhancer. Собственно для KeePass и надо было :)

Отредактировано Kamui (12-10-2012 18:40:23)

Отсутствует

 

№498012-10-2012 22:51:05

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

Re: Custom Buttons

Infocatcher
Спасибо. Кстати, так тоже сохраняет изображение без запроса на место сохранения:

Выделить код

Код:

var imageUrl = 'http://soft.softodrom.ru/screens/soft/79/21289/708610296.png';
saveImageURL(imageUrl, 0, 0, 0, 1);

Если в настройках:
59cd28dcaef394c705a52b77206d9a3b.jpg

Добавлено 12-10-2012 23:06:13
Может кому надо:

Выделить код

Код:

// Сохранить изображение в папке загрузки двойным правым кликом, без запроса на место сохранения ......................
gBrowser.mPanelContainer.addEventListener("dblclick", function(event) {
      if ( event.button == 2 && event.target.nodeName == 'IMG') saveImageURL(gContextMenu.imageURL, 0, 0, 0, 1);
      //....
      setTimeout(function() { document.getElementById("contentAreaContextMenu").hidePopup()}, 0)
}, false);

Отредактировано bunda1 (12-10-2012 23:06:13)

Отсутствует

 

№498113-10-2012 04:05:05

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

Re: Custom Buttons

Небольшая модификация кнопки Vertical toolbar.
Тулбар настраивается почти как «настоящий», атрибуты пишутся в about:config.
Плюс попытка подружить с боковой панелью, а то у меня автоскрытие/автопоказ срабатывает при
прохождении мыши правой границы side-bar'а, а если тащить за эту границу, то и toolbox размеры меняет.
Кнопка не работает на 3.6.28 (у gNavToolbox нету externalToolbars :()

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EVT%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20button%20%3D%20this%3B%0A%0Aconst%20distanceShow%20%3D%202%3B%0Aconst%20distanceHide%20%3D%2064%3B%0Aconst%20toolbarId%20%3D%20%22vertical_toolbar%22%3B%0Aconst%20toolboxId%20%3D%20toolbarId%20+%20%22_toolbox%22%3B%0Aconst%20sep%20%3D%20%22%5Cu00A0%22%3B%0Aconst%20firstAttributes%20%3D%20%22id%20%25id%25%20class%20chromeclass-toolbar%20context%20toolbar-context-menu%20_width%2020%20customizable%20true%20flex%201%20iconize%20large%20mode%20icons%20orient%20vertical%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%20/g%2C%20sep%29.replace%28/%25id%25/%2C%20toolbarId%29%3B%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Avar%20supportsString%20%3D%20Components.classes%5B%22@mozilla.org/supports-string%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsISupportsString%29%3B%0A%0Avar%20prefs%20%3D%20Components.classes%5B%22@mozilla.org/preferences-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20.getBranch%28%22custombutton.verticaltulbar.%22%29%3B%0Abutton.prefs%20%3D%20prefs%3B%0A%0Atry%20%20%20%20%20%20%20%20%7B%20getAttr_pref%28%29%20%7D%0Acatch%28err%29%20%7B%20setAttr_pref%28firstAttributes%29%20%7D%3B%0A%0Afunction%20getAttr_pref%28%29%20%7B%20return%20button.prefs.getComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString.data%29%3B%20%7D%0Afunction%20setAttr_pref%28a%29%20%7B%20var%20attrString%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21a%29%20%7B%20var%20attr%20%3D%20document.getElementById%28toolbarId%29.attributes%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%3D0%3B%20i%3Cattr.length%3B%20i++%29%20%7B%20attrString%20+%3D%20%28attr%5Bi%5D.name%20+%20sep%20+%20attr%5Bi%5D.value%20+%20sep%29%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%20attrString%20%3D%20a%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20supportsString.data%20%3D%20attrString%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.prefs.setComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString%29%3B%20%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%09%0Avar%20browser%20%3D%20document.getElementById%28%22browser%22%29%3B%0Avar%20toolbar%20%3D%20document.getElementById%28toolbarId%29%3B%0Avar%20toolbox%20%3D%20document.getElementById%28toolboxId%29%3B%0A%0Aif%20%28%21toolbar%29%20%7B%0A%0A%09toolbox%20%3D%20document.createElement%28%22toolbox%22%29%3B%0A%09toolbox.id%20%3D%20toolboxId%3B%0A%09toolbox.palette%20%3D%20gNavToolbox.palette%3B%0A%09%0A%09toolbar%20%3D%20document.createElement%28%22toolbar%22%29%3B%0A%09toolbar.style.minWidth%20%3D%20%2220px%22%3B%0A%09%0A%09browser.insertBefore%28toolbox%2C%20browser.firstChild%29%3B%0A%09toolbox.appendChild%28toolbar%29%3B%0A%0A//-------------------------------------------------------------------------%0A//%20Thanks%20-%20http%3A//nanto.asablo.jp/blog/2007/04/22/1459018%0A%0A%09const%20style%20%3D%27%5C%0A%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%3B%5Cn%5C%0A%09%09border-bottom%3A%200px%20none%3B%5Cn%5C%0A%09%09border-top%3A%200px%20none%3B%5Cn%5C%0A%09%09border-right%3A%201px%20solid%20rgb%28170%2C%20188%2C%20207%29%3B%5Cn%5C%0A%09%09background%3A%20none%20repeat%20scroll%200%25%200%25%20rgb%28207%2C%20219%2C%20236%29%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarseparator%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-separator%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%20%21important%3B%5Cn%5C%0A%09%09margin%3A%200.2em%202px%3B%5Cn%5C%0A%09%09border-bottom%3A%201px%20solid%20ThreeDHighlight%3B%5Cn%5C%0A%09%09border-top%3A%201px%20solid%20ThreeDShadow%3B%5Cn%5C%0A%09%09height%3A%202px%3B%5Cn%5C%0A%09%09border-left%3A%20none%3B%5Cn%5C%0A%09%09border-right%3A%20none%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarspacer%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-spacer%22%5D%20%7B%20height%3A%2015px%3B%20%7D%27%0A%0A%09var%20sspi%20%3D%20document.createProcessingInstruction%28%27xml-stylesheet%27%2C%0A%09%09%20%20%27type%3D%22text/css%22%20href%3D%22data%3Atext/css%2C%27%20+%20encodeURI%28style%29%20+%20%27%22%27%29%3B%0A%09document.insertBefore%28sspi%2C%20document.documentElement%29%3B%0A%0A//------------------------------------------------------------------------------%0A%0A%09var%20attr%20%3D%20getAttr_pref%28%29.data.split%28sep%29%3B%0A%09for%20%28var%20i%3D0%3B%20i%3C%28attr.length-1%29%3B%20i+%3D2%29%20%7B%20toolbar.setAttribute%28attr%5Bi%5D%2C%20attr%5Bi+1%5D%29%3B%20%7D%0A%0A%09var%20currentSet%20%3D%20toolbar.getAttribute%28%22currentset%22%29.split%28%22%2C%22%29%3B%0A%09currentSet.forEach%28function%28id%29%7B%20toolbar.insertItem%28id%29%3B%20%7D%29%3B%0A%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Avar%20et%20%3D%20gNavToolbox.externalToolbars%3B%0Avar%20already%20%3D%20false%3B%0Afor%20%28var%20i%3D0%3B%20i%3Cet.length%3B%20i++%29%20%7B%20if%20%28et%5Bi%5D%20%3D%3D%20toolbar%29%20already%20%3D%20true%3B%20%7D%0Aif%20%28%21already%29%20et%5Bet.length%5D%20%3D%20toolbar%3B%0A%0Afunction%20lock%28%29%20%7B%0A%0A%09toolbox.style.maxWidth%20%3D%0A%09toolbox.style.minWidth%20%3D%0A%09toolbar.getAttribute%28%22_width%22%29%20*%20%21toolbar.collapsed%20+%20%22px%22%3B%0A%7D%0Afunction%20beforeCustomize%28%29%20%7B%0A%0A%09toolbox.removeAttribute%28%22style%22%29%3B%0A%09toolbox.removeAttribute%28%22width%22%29%3B%0A%7D%0Afunction%20customizationChange%28%29%20%7B%0A%09window.setTimeout%28function%28%29%20%7B%0A%09%09toolbar.setAttribute%28%22_width%22%2C%20toolbar.boxObject.width%20+%204%29%3B%0A%09%7D%2C%20640%29%3B%0A%7D%0Afunction%20afterCustomize%28%29%20%7B%0A%0A%09setAttr_pref%28%29%3B%0A%09removeListeners%28%29%3B%0A%09lock%28%29%3B%0A%7D%0Afunction%20collapser%28e%29%20%7B%0A%0A%09if%20%28button.checked%29%20return%3B%0A%09var%20distance%20%3D%20e.screenX%20-%20browser.boxObject.screenX%3B%0A%09if%20%28distance%20%3C%3D%20distanceShow%29%20%7B%20toolbar.collapsed%20%3D%20false%3B%20lock%28%29%3B%20%7D%0A%09if%20%28distance%20%3E%3D%20distanceHide%29%20%7B%20toolbar.collapsed%20%3D%20true%3B%20lock%28%29%3B%20%7D%0A%7D%0Afunction%20removeListeners%28%29%20%7B%0A%0A%09gNavToolbox.removeEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%20%0A%0A%09if%20%28e.button%20%21%3D%200%29%20return%3B%0A%09button.checked%20%3D%20%21button.checked%3B%0A%09toolbar.collapsed%20%3D%20%21button.checked%3B%0A%09toolbox.style.maxWidth%20%3D%0A%09toolbox.style.minWidth%20%3D%0A%09toolbar.getAttribute%28%22_width%22%29%20*%20button.checked%20+%20%22px%22%3B%0A%7D%0A%0Abrowser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%0AgNavToolbox.addEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%0A%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09if%20%28%21toolbar.hasAttribute%28%22customizing%22%29%29%20removeListeners%28%29%3B%0A%7D%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№498213-10-2012 11:47:43

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

Re: Custom Buttons

Dumby пишет

Небольшая модификация кнопки Vertical toolbar.

Даже на Nightly работает, отличная кнопка. Совершенствуй кнопку дальше, пожалуйста. Можно сделать задержку что бы не сразу открывалась боковая панель.

Добавлено 13-10-2012 11:49:04

okkamas_knife пишет

спасибо,может пригодится!
кстати запости их в тему со сниппетами,там шаблон есть

Хорошо

Отредактировано bunda1 (13-10-2012 11:49:04)

Отсутствует

 

№498313-10-2012 12:10:09

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 16.0

Re: Custom Buttons

bunda1
А можно в кнопке CB easy drag and go реализовать пару других функций, что-бы при выделении текста можно было вызвать меню всех установленных поисковиков и поиск по сайту, понравилась кнопка своим минимализмом в отличии от других.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№498413-10-2012 12:24:49

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

Re: Custom Buttons

villa7 пишет

bunda1
А можно в кнопке CB easy drag and go реализовать пару других функций, что-бы при выделении текста можно было вызвать меню всех установленных поисковиков и поиск по сайту, понравилась кнопка своим минимализмом в отличии от других.

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

Выделить код

Код:

var text = getBrowserSelection();
var doc = getBrowser (). contentDocument;
        try { var url = doc. location. hostname; }
        catch(e)
        { var url = ""; }  
        var text = escape (convertFromUnicode ("UTF-8", text));
        var url = encodeURIComponent (url);
        var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + url;
        gBrowser.selectedTab = gBrowser.addTab( searchUrl );

CB easy drag and go

Выделить код

Код:

// Блокировать повторный запуск функций и обработчиков при открытии настройки панелей ..............
if (this.hasAttribute("stop")) return;

location == "chrome://browser/content/browser.xul" && (function(event) { 
        var self = arguments.callee; 
        if (!event) {
                ["dragstart", "dragover", "drop"].forEach(function(type) {
                        gBrowser.mPanelContainer.addEventListener(type, self, false);
                });
                window.addEventListener("unload", function() {
                        ["dragstart", "dragover", "drop"].forEach(function(type) {
                                gBrowser.mPanelContainer.removeEventListener(type, self, false);
                        });
                }, false);
                return;
        }
        switch (event.type) {
        case "dragstart":
                {
                        self.startPoint = [event.screenX, event.screenY];
                        self.sourceNode = event.target;
                        event.target.localName == "img" && event.dataTransfer.setData("application/x-moz-file-promise-url", event.target.src);
                        break;
                }
        case "dragover":
                {
                        self.startPoint && (Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService).getCurrentSession().canDrop = true);
                        break;
                }
        case "drop":
                {
                        if (self.startPoint && event.target.localName != "textarea" && (!(event.target.localName == "input" && (event.target.type == "text" || event.target.type == "password"))) && event.target.contentEditable != "true") {
                                event.preventDefault();
                                event.stopPropagation();
                                var [subX, subY] = [event.screenX - self.startPoint[0], event.screenY - self.startPoint[1]];
                                var [distX, distY] = [(subX > 0 ? subX : (-subX)), (subY > 0 ? subY : (-subY))];
                                var direction;
                                var t = content.getSelection().toString();
                                if (distX > distY) direction = subX < 0 ? "L" : "R";
                                else direction = subY < 0 ? "U" : "D";
                                
                                // Изображения ....
                                if ( event.dataTransfer.types.contains("application/x-moz-file-promise-url")) {
                                     if ( direction == "U" ) {
                                          // открыть изображение в новой активной странице
                                          gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("application/x-moz-file-promise-url").split("\n")[0]);
                                          return;
                                          }
                                     if ( direction == "D" ) {
                                          // открыть изображение в новой фоновой странице
                                          gBrowser.addTab(event.dataTransfer.getData("application/x-moz-file-promise-url").split("\n")[0]);
                                          return;
                                          }
                                     if ( direction == "L" ) {
                                          // сохранить изображение или ссылку 
                                          saveImageURL(event.dataTransfer.getData("application/x-moz-file-promise-url"));
                                          return;
                                          } 
                                     if ( direction == "R" ) {
                                          // сохранить изображение или ссылку без запроса на место сохранения
                                          saveImageURL(event.dataTransfer.getData("application/x-moz-file-promise-url"), 0, 0, 0, 1);
                                          return;
                                          }        
                                     }
                                     
                                // Выделенный текст ....
                                else if ( getBrowserSelection() ) {
                                
                                     if ( direction == "U" ) {
                                          // поиск текста в текущем поисковике в новой активной странице
                                          gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=" + getBrowserSelection() );                                          
                                          return;
                                          }     
                                     if ( direction == "D") {
                                          // поиск текста в текущем поисковике в новой фоновой странице
                                          gBrowser.addTab("http://www.google.com/search?q=" + getBrowserSelection() );
                                          return;
                                          }
                                      if ( direction == "L" ) {
                                          // сохранить выделенный текст как txt файл
                                          saveImageURL("data:text/plain;charset=UTF-8;base64," + btoa(unescape(encodeURIComponent(event.dataTransfer.getData("text/unicode")))), event.dataTransfer.getData("text/unicode").slice(0, 5) + ".txt");
                                          return;
                                          }     
                                     if ( direction == "R" ) {
                                          // открыть текстовые ссылки
                                          /^([a-z]+:\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&amp;]*)?)?(#[a-z][a-z0-9_]*)?$/.test(event.dataTransfer.getData("text/unicode")) && (gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/unicode")));
                                          return;
                                          }                                    
                                      }
                                      
                                // Ссылки ....
                                else if ( event.dataTransfer.types.contains("text/x-moz-url")) {
                                     if ( direction == "U" ) {
                                          // открыть ссылку в новой активной странице
                                          gBrowser.selectedTab = gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
                                          return;
                                          }
                                     if ( direction == "D" ) {
                                          // открыть ссылку в новой фоновой странице
                                          gBrowser.addTab(event.dataTransfer.getData("text/x-moz-url").split("\n")[0]);
                                          return;
                                          }
                                }
                                self.startPoint = 0;
                        }
                }
        }
})();


// устанавливаем флаг, чтобы функции и обработчики не исполнялась дважды  
this.setAttribute("stop","true");

Отсутствует

 

№498513-10-2012 15:54:14

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

Re: Custom Buttons

bunda1, спасибо за отзыв :)

bunda1 пишет

Можно сделать задержку что бы не сразу открывалась боковая панель.

Не уверен, что правильно понимаю, но попробую угадать.
Если не угадал, то напиши подробно - что оно должно делать и для чего.

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EVT%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20button%20%3D%20this%3B%0A%0Aconst%20showDelay%20%3D%20555%3B%20//ms%0Aconst%20distanceShow%20%3D%202%3B%0Aconst%20distanceHide%20%3D%2064%3B%0Aconst%20toolbarId%20%3D%20%22vertical_toolbar%22%3B%0Aconst%20toolboxId%20%3D%20toolbarId%20+%20%22_toolbox%22%3B%0Aconst%20sep%20%3D%20%22%5Cu00A0%22%3B%0Aconst%20firstAttributes%20%3D%20%22id%20%25id%25%20class%20chromeclass-toolbar%20context%20toolbar-context-menu%20_width%2020%20customizable%20true%20flex%201%20iconize%20large%20mode%20icons%20orient%20vertical%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%20/g%2C%20sep%29.replace%28/%25id%25/%2C%20toolbarId%29%3B%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Avar%20supportsString%20%3D%20Components.classes%5B%22@mozilla.org/supports-string%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsISupportsString%29%3B%0A%0Avar%20prefs%20%3D%20Components.classes%5B%22@mozilla.org/preferences-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20.getBranch%28%22custombutton.verticaltoolbar.%22%29%3B%0Abutton.prefs%20%3D%20prefs%3B%0A%0Atry%20%20%20%20%20%20%20%20%7B%20getAttr_pref%28%29%20%7D%0Acatch%28err%29%20%7B%20setAttr_pref%28firstAttributes%29%20%7D%3B%0A%0Afunction%20getAttr_pref%28%29%20%7B%20return%20button.prefs.getComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString.data%29%3B%20%7D%0Afunction%20setAttr_pref%28a%29%20%7B%20var%20attrString%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21a%29%20%7B%20var%20attr%20%3D%20document.getElementById%28toolbarId%29.attributes%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%3D0%3B%20i%3Cattr.length%3B%20i++%29%20%7B%20attrString%20+%3D%20%28attr%5Bi%5D.name%20+%20sep%20+%20attr%5Bi%5D.value%20+%20sep%29%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%20attrString%20%3D%20a%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20supportsString.data%20%3D%20attrString%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.prefs.setComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString%29%3B%20%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%09%0Avar%20browser%20%3D%20document.getElementById%28%22browser%22%29%3B%0Avar%20toolbar%20%3D%20document.getElementById%28toolbarId%29%3B%0Avar%20toolbox%20%3D%20document.getElementById%28toolboxId%29%3B%0A%0Aif%20%28%21toolbar%29%20%7B%0A%0A%09toolbox%20%3D%20document.createElement%28%22toolbox%22%29%3B%0A%09toolbox.id%20%3D%20toolboxId%3B%0A%09toolbox.palette%20%3D%20gNavToolbox.palette%3B%0A%09%0A%09toolbar%20%3D%20document.createElement%28%22toolbar%22%29%3B%0A%09toolbar.style.minWidth%20%3D%20%2220px%22%3B%0A%09%0A%09browser.insertBefore%28toolbox%2C%20browser.firstChild%29%3B%0A%09toolbox.appendChild%28toolbar%29%3B%0A%0A//-------------------------------------------------------------------------%0A//%20Thanks%20-%20http%3A//nanto.asablo.jp/blog/2007/04/22/1459018%0A%0A%09const%20style%20%3D%27%5C%0A%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%3B%5Cn%5C%0A%09%09border-bottom%3A%200px%20none%3B%5Cn%5C%0A%09%09border-top%3A%200px%20none%3B%5Cn%5C%0A%09%09border-right%3A%201px%20solid%20rgb%28170%2C%20188%2C%20207%29%3B%5Cn%5C%0A%09%09background%3A%20none%20repeat%20scroll%200%25%200%25%20rgb%28207%2C%20219%2C%20236%29%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarseparator%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-separator%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%20%21important%3B%5Cn%5C%0A%09%09margin%3A%200.2em%202px%3B%5Cn%5C%0A%09%09border-bottom%3A%201px%20solid%20ThreeDHighlight%3B%5Cn%5C%0A%09%09border-top%3A%201px%20solid%20ThreeDShadow%3B%5Cn%5C%0A%09%09height%3A%202px%3B%5Cn%5C%0A%09%09border-left%3A%20none%3B%5Cn%5C%0A%09%09border-right%3A%20none%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarspacer%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-spacer%22%5D%20%7B%20height%3A%2015px%3B%20%7D%27%0A%0A%09var%20sspi%20%3D%20document.createProcessingInstruction%28%27xml-stylesheet%27%2C%0A%09%09%20%20%27type%3D%22text/css%22%20href%3D%22data%3Atext/css%2C%27%20+%20encodeURI%28style%29%20+%20%27%22%27%29%3B%0A%09document.insertBefore%28sspi%2C%20document.documentElement%29%3B%0A%0A//------------------------------------------------------------------------------%0A%0A%09var%20attr%20%3D%20getAttr_pref%28%29.data.split%28sep%29%3B%0A%09for%20%28var%20i%3D0%3B%20i%3C%28attr.length-1%29%3B%20i+%3D2%29%20%7B%20toolbar.setAttribute%28attr%5Bi%5D%2C%20attr%5Bi+1%5D%29%3B%20%7D%0A%0A%09var%20currentSet%20%3D%20toolbar.getAttribute%28%22currentset%22%29.split%28%22%2C%22%29%3B%0A%09currentSet.forEach%28function%28id%29%7B%20toolbar.insertItem%28id%29%3B%20%7D%29%3B%0A%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Avar%20et%20%3D%20gNavToolbox.externalToolbars%3B%0Avar%20already%20%3D%20false%3B%0Afor%20%28var%20i%3D0%3B%20i%3Cet.length%3B%20i++%29%20%7B%20if%20%28et%5Bi%5D%20%3D%3D%20toolbar%29%20already%20%3D%20true%3B%20%7D%0Aif%20%28%21already%29%20et%5Bet.length%5D%20%3D%20toolbar%3B%0A%0Afunction%20lock%28%29%20%7B%0A%0A%09toolbox.style.maxWidth%20%3D%0A%09toolbox.style.minWidth%20%3D%0A%09toolbar.getAttribute%28%22_width%22%29%20*%20%21toolbar.collapsed%20+%20%22px%22%3B%0A%7D%0Afunction%20beforeCustomize%28%29%20%7B%0A%0A%09toolbox.removeAttribute%28%22style%22%29%3B%0A%09toolbox.removeAttribute%28%22width%22%29%3B%0A%7D%0Afunction%20customizationChange%28%29%20%7B%0A%09window.setTimeout%28function%28%29%20%7B%0A%09%09toolbar.setAttribute%28%22_width%22%2C%20toolbar.boxObject.width%20+%204%29%3B%0A%09%7D%2C%20640%29%3B%0A%7D%0Afunction%20afterCustomize%28%29%20%7B%0A%0A%09setAttr_pref%28%29%3B%0A%09removeListeners%28%29%3B%0A%09lock%28%29%3B%0A%7D%0Avar%20distance%3B%0Afunction%20collapser%28e%29%20%7B%0A%0A%09distance%20%3D%20e.screenX%20-%20browser.boxObject.screenX%3B%0A%09if%20%28toolbar.waiting%29%20return%3B%0A%0A%09if%20%28%28distance%20%3C%3D%20distanceShow%29%20%26%26%20%28toolbar.collapsed%29%29%20%7B%0A%0A%09%09if%20%28showDelay%20%3C%201%29%20%7B%20toolbar.collapsed%20%3D%20false%3B%20lock%28%29%3B%20return%3B%20%7D%0A%0A%09%09toolbar.waiting%20%3D%20true%3B%0A%09%09window.setTimeout%28function%28%29%20%7B%0A%0A%09%09%09if%20%28distance%20%3E%3D%20distanceShow%29%20%7B%20toolbar.waiting%20%3D%20false%3B%20return%3B%20%7D%0A%09%09%09toolbar.collapsed%20%3D%20false%3B%0A%09%09%09lock%28%29%3B%0A%09%09%09toolbar.waiting%20%3D%20false%3B%0A%0A%09%09%7D%2C%20showDelay%29%3B%0A%09%7D%0A%09if%20%28%28distance%20%3E%3D%20distanceHide%29%20%26%26%20%28%21toolbar.collapsed%29%29%20%7B%0A%09%09toolbar.collapsed%20%3D%20true%3B%0A%09%09lock%28%29%3B%0A%09%7D%0A%7D%0Afunction%20removeListeners%28%29%20%7B%0A%0A%09gNavToolbox.removeEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%20%0A%0A%09if%20%28e.button%20%21%3D%200%29%20return%3B%0A%09button.checked%20%3D%20%21button.checked%3B%0A%09toolbar.collapsed%20%3D%20%21button.checked%3B%0A%0A%09if%20%28button.checked%29%20%7B%0A%09%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.setAttribute%28%22_checked%22%2C%20%22true%22%29%3B%0A%09%7D%0A%09else%20%7B%0A%09%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.removeAttribute%28%22_checked%22%29%3B%0A%09%7D%0A%09lock%28%29%3B%0A%7D%0A%0Aif%20%28%21toolbar.hasAttribute%28%22_checked%22%29%29%20%7B%0A%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%7D%0Aelse%20%7B%20button.checked%20%3D%20true%3B%20lock%28%29%3B%20%7D%0A%0AgNavToolbox.addEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%0A%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09if%20%28%21toolbar.hasAttribute%28%22customizing%22%29%29%20removeListeners%28%29%3B%0A%09try%20%7B%20getAttr_pref%28%29%20%7D%20catch%28err%29%20%7B%20return%3B%20%7D%0A%09setAttr_pref%28%29%3B%0A%7D%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отредактировано Dumby (14-10-2012 17:15:56)

Отсутствует

 

№498613-10-2012 21:07:32

Пандёнок
Участник
 
Группа: Extensions
Зарегистрирован: 04-11-2008
Сообщений: 5543
UA: Seamonkey 2.13

Re: Custom Buttons

«Weather from gismeteo» одинаково криво в [firefox] и [seamonkey]. Всё показывает, но с кучей тегов.

Отредактировано Пандёнок (13-10-2012 21:14:40)

Отсутствует

 

№498714-10-2012 19:54:02

fil
Участник
 
Группа: Members
Зарегистрирован: 14-10-2012
Сообщений: 18
UA: Firefox 16.0

Re: Custom Buttons

Здравствуйте ! На JS никогда не писал. Помогите, плиз !

Проблема такая: на странице пользователь вручную заполняет массу полей (INPUT). Написал прогу, которая автоматически заполняет эти поля из xls-файла. Что значительно упрощает жизнь. Все Ok' для сайтов работавших под IE (он ActiveX). Но попался сайт работающий только под FireFox (Chrome). Поставил CS. Написал прогу на JS - в ней читаю инфу из текстового файла и вставляю в нужные поля. Не могу обратиться к элементам страницы - такие команды как

document.all, document.forms и т.п. возвращают undefined, а document.GetElementsByTagName('INPUT') и вовсе дает ошибку

Чего я не так делаю ?

FireFox 16.0 JS разрешен

Отсутствует

 

№498814-10-2012 21:01:15

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

Re: Custom Buttons

fil пишет

document.all, document.forms и т.п. возвращают undefined, а document.GetElementsByTagName('INPUT') и вовсе дает ошибку

Это другой документ:

Выделить код

Код:

alert(document.location);

Надо использовать content.document и что-нибудь из https://developer.mozilla.org/en-US/doc … nt#Methods.


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

Отсутствует

 

№498914-10-2012 21:45:59

fil
Участник
 
Группа: Members
Зарегистрирован: 14-10-2012
Сообщений: 18
UA: Firefox 16.0

Re: Custom Buttons

Попробовал content.documen - та же засада, хотя alert(document.location) показывает правильно :(

Отсутствует

 

№499014-10-2012 22:08:27

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

Re: Custom Buttons

Dumby пишет

Не уверен, что правильно понимаю, но попробую угадать.
Если не угадал, то напиши подробно - что оно должно делать и для чего.

Да этото что нужно. А можно сделать переключение режима автоскрытия двойним правым кликом на вертикальной панели.

Отсутствует

 

№499114-10-2012 22:59:41

fil
Участник
 
Группа: Members
Зарегистрирован: 14-10-2012
Сообщений: 18
UA: Firefox 16.0

Re: Custom Buttons

okkamas_knife

Да, собствено, вот и весь код. Всякую работу с текстовым файлом я закоментировал. Пробовал и из CS и из редактора JS что в Инстркментах FF

var oDk=content.document ;

alert(oDk.location) ;
alert(content.document.all) ;
alert(content.document.GetElementsByTagName("input")) ;

Отредактировано fil (14-10-2012 23:00:51)

Отсутствует

 

№499215-10-2012 00:00:24

fil
Участник
 
Группа: Members
Зарегистрирован: 14-10-2012
Сообщений: 18
UA: Firefox 16.0

Re: Custom Buttons

okkamas_knife

Я в доке читал моно одинарные моно двойные.. Но не суть, пробнул и так и так - не работает.

Отсутствует

 

№499315-10-2012 02:20:56

fil
Участник
 
Группа: Members
Зарегистрирован: 14-10-2012
Сообщений: 18
UA: Firefox 16.0

Re: Custom Buttons

okkamas_knife

Ничего не выдает. А ежели из простого редактора JS пустить, то
Exception: document.GetElementsByTagName is not a function

Отсутствует

 

№499415-10-2012 02:57:27

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

Re: Custom Buttons

bunda1 пишет

А можно сделать переключение режима автоскрытия двойним правым кликом на вертикальной панели.

Вот, может быть так...  Но вопрос: почему именно двойным правым, а не двойным левым ?

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EVT%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20button%20%3D%20this%3B%0A%0Aconst%20showDelay%20%3D%20555%3B%20//ms%0Aconst%20distanceShow%20%3D%202%3B%0Aconst%20distanceHide%20%3D%2064%3B%0Aconst%20toolbarId%20%3D%20%22vertical_toolbar%22%3B%0Aconst%20toolboxId%20%3D%20toolbarId%20+%20%22_toolbox%22%3B%0Aconst%20sep%20%3D%20%22%5Cu00A0%22%3B%0Aconst%20firstAttributes%20%3D%20%22id%20%25id%25%20class%20chromeclass-toolbar%20context%20toolbar-context-menu%20_width%2020%20customizable%20true%20flex%201%20iconize%20large%20mode%20icons%20orient%20vertical%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%20/g%2C%20sep%29.replace%28/%25id%25/%2C%20toolbarId%29%3B%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Avar%20supportsString%20%3D%20Components.classes%5B%22@mozilla.org/supports-string%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsISupportsString%29%3B%0A%0Avar%20prefs%20%3D%20Components.classes%5B%22@mozilla.org/preferences-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20.getBranch%28%22custombutton.verticaltoolbar.%22%29%3B%0Abutton.prefs%20%3D%20prefs%3B%0A%0Atry%20%20%20%20%20%20%20%20%7B%20getAttr_pref%28%29%20%7D%0Acatch%28err%29%20%7B%20setAttr_pref%28firstAttributes%29%20%7D%3B%0A%0Afunction%20getAttr_pref%28%29%20%7B%20return%20button.prefs.getComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString.data%29%3B%20%7D%0Afunction%20setAttr_pref%28a%29%20%7B%20var%20attrString%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21a%29%20%7B%20var%20attr%20%3D%20document.getElementById%28toolbarId%29.attributes%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%3D0%3B%20i%3Cattr.length%3B%20i++%29%20%7B%20attrString%20+%3D%20%28attr%5Bi%5D.name%20+%20sep%20+%20attr%5Bi%5D.value%20+%20sep%29%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%20attrString%20%3D%20a%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20supportsString.data%20%3D%20attrString%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.prefs.setComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString%29%3B%20%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%09%0Avar%20browser%20%3D%20document.getElementById%28%22browser%22%29%3B%0Avar%20toolbar%20%3D%20document.getElementById%28toolbarId%29%3B%0Avar%20toolbox%20%3D%20document.getElementById%28toolboxId%29%3B%0A%0Aif%20%28%21toolbar%29%20%7B%0A%0A%09toolbox%20%3D%20document.createElement%28%22toolbox%22%29%3B%0A%09toolbox.id%20%3D%20toolboxId%3B%0A%09toolbox.palette%20%3D%20gNavToolbox.palette%3B%0A%09%0A%09toolbar%20%3D%20document.createElement%28%22toolbar%22%29%3B%0A%09toolbar.style.minWidth%20%3D%20%2220px%22%3B%0A%09%0A%09browser.insertBefore%28toolbox%2C%20browser.firstChild%29%3B%0A%09toolbox.appendChild%28toolbar%29%3B%0A%0A//-------------------------------------------------------------------------%0A//%20Thanks%20-%20http%3A//nanto.asablo.jp/blog/2007/04/22/1459018%0A%0A%09const%20style%20%3D%27%5C%0A%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%3B%5Cn%5C%0A%09%09border-bottom%3A%200px%20none%3B%5Cn%5C%0A%09%09border-top%3A%200px%20none%3B%5Cn%5C%0A%09%09border-right%3A%201px%20solid%20rgb%28170%2C%20188%2C%20207%29%3B%5Cn%5C%0A%09%09background%3A%20none%20repeat%20scroll%200%25%200%25%20rgb%28207%2C%20219%2C%20236%29%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarseparator%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-separator%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%20%21important%3B%5Cn%5C%0A%09%09margin%3A%200.2em%202px%3B%5Cn%5C%0A%09%09border-bottom%3A%201px%20solid%20ThreeDHighlight%3B%5Cn%5C%0A%09%09border-top%3A%201px%20solid%20ThreeDShadow%3B%5Cn%5C%0A%09%09height%3A%202px%3B%5Cn%5C%0A%09%09border-left%3A%20none%3B%5Cn%5C%0A%09%09border-right%3A%20none%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarspacer%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-spacer%22%5D%20%7B%20height%3A%2015px%3B%20%7D%27%0A%0A%09var%20sspi%20%3D%20document.createProcessingInstruction%28%27xml-stylesheet%27%2C%0A%09%09%20%20%27type%3D%22text/css%22%20href%3D%22data%3Atext/css%2C%27%20+%20encodeURI%28style%29%20+%20%27%22%27%29%3B%0A%09document.insertBefore%28sspi%2C%20document.documentElement%29%3B%0A%0A//------------------------------------------------------------------------------%0A%0A%09var%20attr%20%3D%20getAttr_pref%28%29.data.split%28sep%29%3B%0A%09for%20%28var%20i%3D0%3B%20i%3C%28attr.length-1%29%3B%20i+%3D2%29%20%7B%20toolbar.setAttribute%28attr%5Bi%5D%2C%20attr%5Bi+1%5D%29%3B%20%7D%0A%0A%09var%20currentSet%20%3D%20toolbar.getAttribute%28%22currentset%22%29.split%28%22%2C%22%29%3B%0A%09currentSet.forEach%28function%28id%29%7B%20toolbar.insertItem%28id%29%3B%20%7D%29%3B%0A%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Avar%20et%20%3D%20gNavToolbox.externalToolbars%3B%0Avar%20already%20%3D%20false%3B%0Afor%20%28var%20i%3D0%3B%20i%3Cet.length%3B%20i++%29%20%7B%20if%20%28et%5Bi%5D%20%3D%3D%20toolbar%29%20already%20%3D%20true%3B%20%7D%0Aif%20%28%21already%29%20et%5Bet.length%5D%20%3D%20toolbar%3B%0A%0Afunction%20lock%28%29%20%7B%0A%0A%09toolbox.style.maxWidth%20%3D%0A%09toolbox.style.minWidth%20%3D%0A%09toolbar.getAttribute%28%22_width%22%29%20*%20%21toolbar.collapsed%20+%20%22px%22%3B%0A%7D%0Afunction%20beforeCustomize%28%29%20%7B%0A%0A%09toolbox.removeAttribute%28%22style%22%29%3B%0A%09toolbox.removeAttribute%28%22width%22%29%3B%0A%7D%0Afunction%20customizationChange%28%29%20%7B%0A%09window.setTimeout%28function%28%29%20%7B%0A%09%09toolbar.setAttribute%28%22_width%22%2C%20toolbar.boxObject.width%20+%204%29%3B%0A%09%7D%2C%20640%29%3B%0A%7D%0Afunction%20afterCustomize%28%29%20%7B%0A%0A%09setAttr_pref%28%29%3B%0A%09removeListeners%28%29%3B%0A%09lock%28%29%3B%0A%7D%0Avar%20distance%3B%0Afunction%20collapser%28e%29%20%7B%0A%0A%09distance%20%3D%20e.screenX%20-%20browser.boxObject.screenX%3B%0A%09if%20%28toolbar.waiting%29%20return%3B%0A%0A%09if%20%28%28distance%20%3C%3D%20distanceShow%29%20%26%26%20%28toolbar.collapsed%29%29%20%7B%0A%0A%09%09if%20%28showDelay%20%3C%201%29%20%7B%20toolbar.collapsed%20%3D%20false%3B%20lock%28%29%3B%20return%3B%20%7D%0A%0A%09%09toolbar.waiting%20%3D%20true%3B%0A%09%09window.setTimeout%28function%28%29%20%7B%0A%0A%09%09%09if%20%28distance%20%3E%3D%20distanceShow%29%20%7B%20toolbar.waiting%20%3D%20false%3B%20return%3B%20%7D%0A%09%09%09toolbar.collapsed%20%3D%20false%3B%0A%09%09%09lock%28%29%3B%0A%09%09%09toolbar.waiting%20%3D%20false%3B%0A%0A%09%09%7D%2C%20showDelay%29%3B%0A%09%7D%0A%09if%20%28%28distance%20%3E%3D%20distanceHide%29%20%26%26%20%28%21toolbar.collapsed%29%29%20%7B%0A%09%09toolbar.collapsed%20%3D%20true%3B%0A%09%09lock%28%29%3B%0A%09%7D%0A%7D%0Afunction%20removeListeners%28%29%20%7B%0A%0A%09gNavToolbox.removeEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%20%0A%0A%09if%20%28e.button%20%21%3D%200%29%20return%3B%0A%09button.checked%20%3D%20%21button.checked%3B%0A%09toolbar.collapsed%20%3D%20%21button.checked%3B%0A%0A%09if%20%28button.checked%29%20%7B%0A%09%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.setAttribute%28%22_checked%22%2C%20%22true%22%29%3B%0A%09%7D%0A%09else%20%7B%0A%09%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.removeAttribute%28%22_checked%22%29%3B%0A%09%7D%0A%09lock%28%29%3B%0A%7D%0Atoolbar.ondblclick%20%3D%20function%28e%29%20%7B%0A%0A%09if%20%28%20%20%20%20e.button%20%21%3D%202%20%7C%7C%0A%09%09e.target.nodeName%20%3D%3D%20%22toolbarbutton%22%20%7C%7C%0A%09%09e.target.nodeName%20%3D%3D%20%22toolbaritem%22%0A%09%29%20return%3B%0A%0A%09button.click%28%29%3B%0A%09setTimeout%28function%28%29%20%7B%20document.getElementById%28%22toolbar-context-menu%22%29.hidePopup%28%29%3B%20%7D%2C%2050%29%3B%0A%7D%0A%0Aif%20%28%21toolbar.hasAttribute%28%22_checked%22%29%29%20%7B%0A%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%7D%0Aelse%20%7B%20button.checked%20%3D%20true%3B%20lock%28%29%3B%20%7D%0A%0AgNavToolbox.addEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%0A%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09if%20%28%21toolbar.hasAttribute%28%22customizing%22%29%29%20removeListeners%28%29%3B%0A%09try%20%7B%20getAttr_pref%28%29%20%7D%20catch%28err%29%20%7B%20return%3B%20%7D%0A%09setAttr_pref%28%29%3B%0A%7D%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


fil, getElementsByTagName пишется с маленькой буквы g :)

Отсутствует

 

№499515-10-2012 08:06:25

fil
Участник
 
Группа: Members
Зарегистрирован: 14-10-2012
Сообщений: 18
UA: Firefox 16.0

Re: Custom Buttons

okkamas_knife, Dumby

Да-а, не привычен я к строгостям по регистру... Спасибо, заработало

Отсутствует

 

№499615-10-2012 18:47:49

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

Re: Custom Buttons

Dumby пишет

Вот, может быть так...  Но вопрос: почему именно двойным правым, а не двойным левым ?

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

Отсутствует

 

№499716-10-2012 05:15:09

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

Re: Custom Buttons

bunda1 пишет

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

про fullscreen и настройку
Ну тут всё оказалось просто - чтобы отображаться в полноэкранном режиме
тулбару достаточно иметь атрибут fullscreentoolbar = true

Вот версия с таким дефолтным атрибутом.

Но придётся:  about:config > custombutton.verticaltoolbar.attributes > ПКМ > Сбросить > restart
                        и настроить тулбар заново.

Кстати, может пригодится - совет по настройке:
Элементы, расположенные на тулбаре следует воспринимать не как вертикальные,
а как горизонтальные, тогда, при настройке
если схватить мышью какой-нибудь элемент (Elm 1)
и отпустить над элементом, расположенным на тулбаре (Elm 2),
то
если отпустить Elm 1 ближе к левому краю Elm 2, то Elm 1 расположится сверху от Elm 2,
а если отпустить Elm 1 ближе к правому краю Elm 2, то Elm 1 расположится снизу от Elm 2.

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EVT%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20button%20%3D%20this%3B%0A%0Aconst%20showDelay%20%3D%20555%3B%20//ms%0Aconst%20distanceShow%20%3D%202%3B%0Aconst%20distanceHide%20%3D%2064%3B%0Aconst%20toolbarId%20%3D%20%22vertical_toolbar%22%3B%0Aconst%20toolboxId%20%3D%20toolbarId%20+%20%22_toolbox%22%3B%0Aconst%20sep%20%3D%20%22%5Cu00A0%22%3B%0Aconst%20firstAttributes%20%3D%20%22id%20%25id%25%20class%20chromeclass-toolbar%20fullscreentoolbar%20true%20context%20toolbar-context-menu%20_width%2020%20customizable%20true%20flex%201%20iconize%20large%20mode%20icons%20orient%20vertical%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%20/g%2C%20sep%29.replace%28/%25id%25/%2C%20toolbarId%29%3B%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Avar%20supportsString%20%3D%20Components.classes%5B%22@mozilla.org/supports-string%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsISupportsString%29%3B%0A%0Avar%20prefs%20%3D%20Components.classes%5B%22@mozilla.org/preferences-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20.getBranch%28%22custombutton.verticaltoolbar.%22%29%3B%0Abutton.prefs%20%3D%20prefs%3B%0A%0Atry%20%20%20%20%20%20%20%20%7B%20getAttr_pref%28%29%20%7D%0Acatch%28err%29%20%7B%20setAttr_pref%28firstAttributes%29%20%7D%3B%0A%0Afunction%20getAttr_pref%28%29%20%7B%20return%20button.prefs.getComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString.data%29%3B%20%7D%0Afunction%20setAttr_pref%28a%29%20%7B%20var%20attrString%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21a%29%20%7B%20var%20attr%20%3D%20document.getElementById%28toolbarId%29.attributes%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%3D0%3B%20i%3Cattr.length%3B%20i++%29%20%7B%20attrString%20+%3D%20%28attr%5Bi%5D.name%20+%20sep%20+%20attr%5Bi%5D.value%20+%20sep%29%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%20attrString%20%3D%20a%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20supportsString.data%20%3D%20attrString%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.prefs.setComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString%29%3B%20%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%09%0Avar%20browser%20%3D%20document.getElementById%28%22browser%22%29%3B%0Avar%20toolbar%20%3D%20document.getElementById%28toolbarId%29%3B%0Avar%20toolbox%20%3D%20document.getElementById%28toolboxId%29%3B%0A%0Aif%20%28%21toolbar%29%20%7B%0A%0A%09toolbox%20%3D%20document.createElement%28%22toolbox%22%29%3B%0A%09toolbox.id%20%3D%20toolboxId%3B%0A%09toolbox.palette%20%3D%20gNavToolbox.palette%3B%0A%09%0A%09toolbar%20%3D%20document.createElement%28%22toolbar%22%29%3B%0A%09toolbar.style.minWidth%20%3D%20%2220px%22%3B%0A%09%0A%09browser.insertBefore%28toolbox%2C%20browser.firstChild%29%3B%0A%09toolbox.appendChild%28toolbar%29%3B%0A%0A//-------------------------------------------------------------------------%0A//%20Thanks%20-%20http%3A//nanto.asablo.jp/blog/2007/04/22/1459018%0A%0A%09const%20style%20%3D%27%5C%0A%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%3B%5Cn%5C%0A%09%09border-bottom%3A%200px%20none%3B%5Cn%5C%0A%09%09border-top%3A%200px%20none%3B%5Cn%5C%0A%09%09border-right%3A%201px%20solid%20rgb%28170%2C%20188%2C%20207%29%3B%5Cn%5C%0A%09%09background%3A%20none%20repeat%20scroll%200%25%200%25%20rgb%28207%2C%20219%2C%20236%29%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarseparator%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-separator%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%20%21important%3B%5Cn%5C%0A%09%09margin%3A%200.2em%202px%3B%5Cn%5C%0A%09%09border-bottom%3A%201px%20solid%20ThreeDHighlight%3B%5Cn%5C%0A%09%09border-top%3A%201px%20solid%20ThreeDShadow%3B%5Cn%5C%0A%09%09height%3A%202px%3B%5Cn%5C%0A%09%09border-left%3A%20none%3B%5Cn%5C%0A%09%09border-right%3A%20none%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarspacer%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-spacer%22%5D%20%7B%20height%3A%2015px%3B%20%7D%27%0A%0A%09var%20sspi%20%3D%20document.createProcessingInstruction%28%27xml-stylesheet%27%2C%0A%09%09%20%20%27type%3D%22text/css%22%20href%3D%22data%3Atext/css%2C%27%20+%20encodeURI%28style%29%20+%20%27%22%27%29%3B%0A%09document.insertBefore%28sspi%2C%20document.documentElement%29%3B%0A%0A//------------------------------------------------------------------------------%0A%0A%09var%20attr%20%3D%20getAttr_pref%28%29.data.split%28sep%29%3B%0A%09for%20%28var%20i%3D0%3B%20i%3C%28attr.length-1%29%3B%20i+%3D2%29%20%7B%20toolbar.setAttribute%28attr%5Bi%5D%2C%20attr%5Bi+1%5D%29%3B%20%7D%0A%0A%09var%20currentSet%20%3D%20toolbar.getAttribute%28%22currentset%22%29.split%28%22%2C%22%29%3B%0A%09currentSet.forEach%28function%28id%29%7B%20toolbar.insertItem%28id%29%3B%20%7D%29%3B%0A%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Avar%20et%20%3D%20gNavToolbox.externalToolbars%3B%0Avar%20already%20%3D%20false%3B%0Afor%20%28var%20i%3D0%3B%20i%3Cet.length%3B%20i++%29%20%7B%20if%20%28et%5Bi%5D%20%3D%3D%20toolbar%29%20already%20%3D%20true%3B%20%7D%0Aif%20%28%21already%29%20et%5Bet.length%5D%20%3D%20toolbar%3B%0A%0Afunction%20lock%28%29%20%7B%0A%0A%09toolbox.style.maxWidth%20%3D%0A%09toolbox.style.minWidth%20%3D%0A%09toolbar.getAttribute%28%22_width%22%29%20*%20%21toolbar.collapsed%20+%20%22px%22%3B%0A%7D%0Afunction%20beforeCustomize%28%29%20%7B%0A%0A%09toolbox.removeAttribute%28%22style%22%29%3B%0A%09toolbox.removeAttribute%28%22width%22%29%3B%0A%7D%0Afunction%20customizationChange%28%29%20%7B%0A%09window.setTimeout%28function%28%29%20%7B%0A%09%09toolbar.setAttribute%28%22_width%22%2C%20toolbar.boxObject.width%20+%204%29%3B%0A%09%7D%2C%20640%29%3B%0A%7D%0Afunction%20afterCustomize%28%29%20%7B%0A%0A%09setAttr_pref%28%29%3B%0A%09removeListeners%28%29%3B%0A%09lock%28%29%3B%0A%7D%0Avar%20distance%3B%0Afunction%20collapser%28e%29%20%7B%0A%0A%09distance%20%3D%20e.screenX%20-%20browser.boxObject.screenX%3B%0A%09if%20%28toolbar.waiting%29%20return%3B%0A%0A%09if%20%28%28distance%20%3C%3D%20distanceShow%29%20%26%26%20%28toolbar.collapsed%29%29%20%7B%0A%0A%09%09if%20%28showDelay%20%3C%201%29%20%7B%20toolbar.collapsed%20%3D%20false%3B%20lock%28%29%3B%20return%3B%20%7D%0A%0A%09%09toolbar.waiting%20%3D%20true%3B%0A%09%09window.setTimeout%28function%28%29%20%7B%0A%0A%09%09%09if%20%28distance%20%3E%3D%20distanceShow%29%20%7B%20toolbar.waiting%20%3D%20false%3B%20return%3B%20%7D%0A%09%09%09toolbar.collapsed%20%3D%20false%3B%0A%09%09%09lock%28%29%3B%0A%09%09%09toolbar.waiting%20%3D%20false%3B%0A%0A%09%09%7D%2C%20showDelay%29%3B%0A%09%7D%0A%09if%20%28%28distance%20%3E%3D%20distanceHide%29%20%26%26%20%28%21toolbar.collapsed%29%29%20%7B%0A%09%09toolbar.collapsed%20%3D%20true%3B%0A%09%09lock%28%29%3B%0A%09%7D%0A%7D%0Afunction%20removeListeners%28%29%20%7B%0A%0A%09gNavToolbox.removeEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%20%0A%0A%09if%20%28e.button%20%21%3D%200%29%20return%3B%0A%09button.checked%20%3D%20%21button.checked%3B%0A%09toolbar.collapsed%20%3D%20%21button.checked%3B%0A%0A%09if%20%28button.checked%29%20%7B%0A%09%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.setAttribute%28%22_checked%22%2C%20%22true%22%29%3B%0A%09%7D%0A%09else%20%7B%0A%09%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.removeAttribute%28%22_checked%22%29%3B%0A%09%7D%0A%09lock%28%29%3B%0A%7D%0Atoolbar.ondblclick%20%3D%20function%28e%29%20%7B%0A%0A%09if%20%28%20%20%20%20e.button%20%21%3D%202%20%7C%7C%0A%09%09e.target.nodeName%20%3D%3D%20%22toolbarbutton%22%20%7C%7C%0A%09%09e.target.nodeName%20%3D%3D%20%22toolbaritem%22%0A%09%29%20return%3B%0A%0A%09button.click%28%29%3B%0A%09setTimeout%28function%28%29%20%7B%20document.getElementById%28%22toolbar-context-menu%22%29.hidePopup%28%29%3B%20%7D%2C%2050%29%3B%0A%7D%0A%0Aif%20%28%21toolbar.hasAttribute%28%22_checked%22%29%29%20%7B%0A%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%7D%0Aelse%20%7B%20button.checked%20%3D%20true%3B%20lock%28%29%3B%20%7D%0A%0AgNavToolbox.addEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%0A%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09if%20%28%21toolbar.hasAttribute%28%22customizing%22%29%29%20removeListeners%28%29%3B%0A%09try%20%7B%20getAttr_pref%28%29%20%7D%20catch%28err%29%20%7B%20return%3B%20%7D%0A%09setAttr_pref%28%29%3B%0A%7D%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1 пишет

И было не плохо если при автоматическим режиме вертикальная панель открывалась поверх страницы а не сжимала страницу как сейчас.

А вот это никак не получается, наверное придётся помощи просить...

Отсутствует

 

№499816-10-2012 21:40:34

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

Re: Custom Buttons

Dumby пишет

А вот это никак не получается, наверное придётся помощи просить...

Вот css стиль который делает подобное с панелем закладок, может поможет.

Выделить код

Код:

#navigator-toolbox > #PersonalToolbar {
  z-index:10000;
  position: fixed;
  visibility: hidden;
  margin-top: 32px;
  padding-top: 2px !important;
  width: 100%;
  border-bottom:1px solid rgba(0,0,0,0.5) !important;
  border-right:1px solid #797979 !important;
  border-left:1px solid rgba(0,0,0,0.4) !important;
  box-shadow: 0px 5px 5px rgba(0,0,0,0.10) !important;
  -moz-transition-property: visibility, opacity, margin;
  -moz-transition-duration: 0.2s;
  -moz-transition-delay: 0.7s;
  -moz-transition-timing-function: ease-in-out;
}

#navigator-toolbox:hover > #PersonalToolbar {
  visibility: visible;
  margin-top: 59px;
  -moz-transition-delay: 0s;
}

Отсутствует

 

№499917-10-2012 04:47:51

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

Re: Custom Buttons

bunda1

Спасибо, весёлый стиль, но CSS мне ещё менее понятен, чем JavaScript.
Однако, всё-таки попробую. Фича переключается, если по кнопке: СКМ или Двойной клик.
Код уже совсем стал кривой и неоптимальный...

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EVT%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20button%20%3D%20this%3B%0A%0Aconst%20showDelay%20%3D%20555%3B%20//ms%0Aconst%20distanceShow%20%3D%202%3B%0Aconst%20distanceHide%20%3D%2064%3B%0Aconst%20toolbarId%20%3D%20%22vertical_toolbar%22%3B%0Aconst%20toolboxId%20%3D%20toolbarId%20+%20%22_toolbox%22%3B%0Aconst%20img%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%22%3B%0Aconst%20imgOver%20%3D%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wDVEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wDVKP8A1YX/ANUoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wDVFf8A1RUAAAAAAAAAAAAAAAAAAAAA/wDVJP8A1f//ANX//wDV//8A1SQAAAAAAAAAAAAAAAAAAAAA/wDVEv8A1f//ANX//wDVEgAAAAAAAAAA/wDVIP8A1f//ANX//wDV//8A1f//ANX//wDVJgAAAAAAAAAAAAAAAP8A1RH/ANX//wDV//8A1REAAAAAAAAAAP8A1f//ANX//wDV//8A1Tb/ANX//wDV//8A1f//ANUQAAAAAAAAAAD/ANUP/wDV//8A1f//ANUPAAAAAAAAAAD/ANX//wDV//8A1SAAAAAA/wDVIP8A1f//ANX//wDVEQAAAAAAAAAA/wDVD/8A1f//ANX//wDVDwAAAAAAAAAA/wDV//8A1f//ANUMAAAAAP8A1Qz/ANX//wDV//8A1Q8AAAAAAAAAAP8A1Q//ANX//wDV//8A1Q8AAAAAAAAAAP8A1f//ANX//wDVDwAAAAD/ANUP/wDV//8A1f//ANUPAAAAAAAAAAD/ANUP/wDV//8A1f//ANUPAAAAAAAAAAD/ANX//wDV//8A1Q8AAAAA/wDVD/8A1f//ANX//wDVDAAAAAAAAAAA/wDVCv8A1f//ANX//wDVCgAAAAAAAAAA/wDV//8A1f//ANUPAAAAAP8A1Q//ANX//wDV//8A1Qv/ANUL/wDVDP8A1SH/ANX//wDV//8A1SH/ANUK/wDVD/8A1f//ANX//wDVEQAAAAD/ANUR/wDV//8A1f//ANUm/wDV//8A1f//ANX//wDV//8A1f//ANX//wDV//8A1f//ANX//wDV//8A1RIAAAAA/wDVEv8A1f//ANX//wDVJ/8A1f//ANX//wDV//8A1f//ANX//wDV//8A1f//ANX//wDVEf8A1RIAAAAAAAAAAAAAAAD/ANUV/wDVEgAAAAD/ANUQ/wDVEf8A1Q//ANUP/wDVD/8A1Q//ANUP/wDVDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%22%3B%0Aconst%20sep%20%3D%20%22%5Cu00A0%22%3B%0Aconst%20firstAttributes%20%3D%20%22id%20%25id%25%20class%20chromeclass-toolbar%20fullscreentoolbar%20true%20context%20toolbar-context-menu%20_width%2020%20customizable%20true%20flex%201%20iconize%20large%20mode%20icons%20orient%20vertical%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%20/g%2C%20sep%29.replace%28/%25id%25/%2C%20toolbarId%29%3B%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0Avar%20supportsString%20%3D%20Components.classes%5B%22@mozilla.org/supports-string%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsISupportsString%29%3B%0A%0Avar%20prefs%20%3D%20Components.classes%5B%22@mozilla.org/preferences-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIPrefService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20.getBranch%28%22custombutton.verticaltoolbar.%22%29%3B%0Abutton.prefs%20%3D%20prefs%3B%0A%0Atry%20%20%20%20%20%20%20%20%7B%20getAttr_pref%28%29%20%7D%0Acatch%28err%29%20%7B%20setAttr_pref%28firstAttributes%29%20%7D%3B%0A%0Afunction%20getAttr_pref%28%29%20%7B%20return%20button.prefs.getComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString.data%29%3B%20%7D%0Afunction%20setAttr_pref%28a%29%20%7B%20var%20attrString%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21a%29%20%7B%20var%20attr%20%3D%20document.getElementById%28toolbarId%29.attributes%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%3D0%3B%20i%3Cattr.length%3B%20i++%29%20%7B%20attrString%20+%3D%20%28attr%5Bi%5D.name%20+%20sep%20+%20attr%5Bi%5D.value%20+%20sep%29%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%20attrString%20%3D%20a%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20supportsString.data%20%3D%20attrString%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.prefs.setComplexValue%28%22attributes%22%2C%20Components.interfaces.nsISupportsString%2C%20supportsString%29%3B%20%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%09%0Avar%20browser%20%3D%20document.getElementById%28%22browser%22%29%3B%0Avar%20toolbar%20%3D%20document.getElementById%28toolbarId%29%3B%0Avar%20toolbox%20%3D%20document.getElementById%28toolboxId%29%3B%0A%0Aif%20%28%21toolbar%29%20%7B%0A%0A%09toolbox%20%3D%20document.createElement%28%22toolbox%22%29%3B%0A%09toolbox.id%20%3D%20toolboxId%3B%0A%09toolbox.palette%20%3D%20gNavToolbox.palette%3B%0A%09%0A%09toolbar%20%3D%20document.createElement%28%22toolbar%22%29%3B%0A%09toolbar.style.minWidth%20%3D%20%2220px%22%3B%0A%09%0A%09browser.insertBefore%28toolbox%2C%20browser.firstChild%29%3B%0A%09toolbox.appendChild%28toolbar%29%3B%0A%0A//-------------------------------------------------------------------------%0A//%20Thanks%20-%20http%3A//nanto.asablo.jp/blog/2007/04/22/1459018%0A%0A%09const%20style%20%3D%27%5C%0A%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%3B%5Cn%5C%0A%09%09border-bottom%3A%200px%20none%3B%5Cn%5C%0A%09%09border-top%3A%200px%20none%3B%5Cn%5C%0A%09%09border-right%3A%201px%20solid%20rgb%28170%2C%20188%2C%20207%29%3B%5Cn%5C%0A%09%09background%3A%20none%20repeat%20scroll%200%25%200%25%20rgb%28207%2C%20219%2C%20236%29%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarseparator%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-separator%22%5D%20%7B%5Cn%5C%0A%09%09-moz-appearance%3A%20none%20%21important%3B%5Cn%5C%0A%09%09margin%3A%200.2em%202px%3B%5Cn%5C%0A%09%09border-bottom%3A%201px%20solid%20ThreeDHighlight%3B%5Cn%5C%0A%09%09border-top%3A%201px%20solid%20ThreeDShadow%3B%5Cn%5C%0A%09%09height%3A%202px%3B%5Cn%5C%0A%09%09border-left%3A%20none%3B%5Cn%5C%0A%09%09border-right%3A%20none%3B%5Cn%5C%0A%7D%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20toolbarspacer%2C%5Cn%5C%0A%09toolbar%5Borient%3D%22vertical%22%5D%20%3E%20%5Bid%5E%3D%22wrapper-spacer%22%5D%20%7B%20height%3A%2015px%3B%20%7D%27%0A%0A%09var%20sspi%20%3D%20document.createProcessingInstruction%28%27xml-stylesheet%27%2C%0A%09%09%20%20%27type%3D%22text/css%22%20href%3D%22data%3Atext/css%2C%27%20+%20encodeURI%28style%29%20+%20%27%22%27%29%3B%0A%09document.insertBefore%28sspi%2C%20document.documentElement%29%3B%0A%0A//------------------------------------------------------------------------------%0A%0A%09var%20attr%20%3D%20getAttr_pref%28%29.data.split%28sep%29%3B%0A%09for%20%28var%20i%3D0%3B%20i%3C%28attr.length-1%29%3B%20i+%3D2%29%20%7B%20toolbar.setAttribute%28attr%5Bi%5D%2C%20attr%5Bi+1%5D%29%3B%20%7D%0A%0A%09var%20currentSet%20%3D%20toolbar.getAttribute%28%22currentset%22%29.split%28%22%2C%22%29%3B%0A%09currentSet.forEach%28function%28id%29%7B%20toolbar.insertItem%28id%29%3B%20%7D%29%3B%0A%7D%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0Avar%20et%20%3D%20gNavToolbox.externalToolbars%3B%0Avar%20already%20%3D%20false%3B%0Afor%20%28var%20i%3D0%3B%20i%3Cet.length%3B%20i++%29%20%7B%20if%20%28et%5Bi%5D%20%3D%3D%20toolbar%29%20already%20%3D%20true%3B%20%7D%0Aif%20%28%21already%29%20et%5Bet.length%5D%20%3D%20toolbar%3B%0A%0Afunction%20lock%28%29%20%7B%0A%0A%09toolbox.style.maxWidth%20%3D%0A%09toolbox.style.minWidth%20%3D%0A%09toolbar.getAttribute%28%22_width%22%29%20*%20%21toolbar.collapsed%20+%20%22px%22%3B%0A%7D%0Afunction%20beforeCustomize%28%29%20%7B%0A%0A%09toolbox.removeAttribute%28%22style%22%29%3B%0A%09toolbox.removeAttribute%28%22width%22%29%3B%0A%09toolbar.removeAttribute%28%22style%22%29%3B%0A%09toolbar.style.minWidth%20%3D%20%2220px%22%3B%0A%7D%0Afunction%20customizationChange%28%29%20%7B%0A%09window.setTimeout%28function%28%29%20%7B%0A%09%09toolbar.setAttribute%28%22_width%22%2C%20toolbar.boxObject.width%20+%204%29%3B%0A%09%7D%2C%20640%29%3B%0A%7D%0Afunction%20afterCustomize%28%29%20%7B%0A%0A%09setAttr_pref%28%29%3B%0A%09removeListeners%28%29%3B%0A%09lock%28%29%3B%0A%7D%0Avar%20distance%3B%0Afunction%20collapser%28e%29%20%7B%0A%0A%09distance%20%3D%20e.screenX%20-%20browser.boxObject.screenX%3B%0A%09if%20%28toolbar.waiting%29%20return%3B%0A%0A%09if%20%28%28distance%20%3C%3D%20distanceShow%29%20%26%26%20%28toolbar.collapsed%29%29%20%7B%0A%0A%09%09if%20%28toolbar.hasAttribute%28%22_over%22%29%29%20toolbar.style.height%20%3D%20browser.boxObject.height%20+%20%22px%22%3B%0A%09%09if%20%28showDelay%20%3C%201%29%20%7B%20toolbar.collapsed%20%3D%20false%3B%20lock%28%29%3B%20return%3B%20%7D%0A%0A%09%09toolbar.waiting%20%3D%20true%3B%0A%09%09window.setTimeout%28function%28%29%20%7B%0A%0A%09%09%09if%20%28distance%20%3E%3D%20distanceShow%29%20%7B%20toolbar.waiting%20%3D%20false%3B%20return%3B%20%7D%0A%09%09%09toolbar.collapsed%20%3D%20false%3B%0A%09%09%09lock%28%29%3B%0A%09%09%09toolbar.waiting%20%3D%20false%3B%0A%0A%09%09%7D%2C%20showDelay%29%3B%0A%09%7D%0A%09if%20%28%28distance%20%3E%3D%20distanceHide%29%20%26%26%20%28%21toolbar.collapsed%29%29%20%7B%0A%09%09toolbar.collapsed%20%3D%20true%3B%0A%09%09lock%28%29%3B%0A%09%7D%0A%7D%0Afunction%20removeListeners%28%29%20%7B%0A%0A%09gNavToolbox.removeEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0A%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%7D%0A%0Afunction%20setIcon%28%29%20%7B%20button.image%20%3D%20%28%21toolbar.hasAttribute%28%22_over%22%29%29%20%3F%20img%20%3A%20imgOver%3B%20%7D%0A%0Afunction%20setModeOver%28off%29%20%7B%0A%0A%09if%20%28off%29%20toolbar.removeAttribute%28%22_over%22%29%0A%09else%20toolbar.setAttribute%28%22_over%22%2C%20%22true%22%29%3B%0A%0A%09if%20%28button.checked%29%20off%20%3D%20true%3B%0A%09%0A%09toolbox.style.position%20%3D%20off%20%3F%20%22%22%20%3A%20%22fixed%22%3B%0A%09toolbox.style.height%20%3D%0A%09toolbar.style.height%20%3D%20off%20%3F%20%22%22%20%3A%20browser.boxObject.height%20+%20%22px%22%3B%0A%0A%09toolbar.style.maxWidth%20%3D%0A%09toolbar.style.minWidth%20%3D%20off%20%3F%20%22%22%20%3A%20toolbar.getAttribute%28%22_width%22%29+%20%22px%22%3B%0A%09%0A%09setIcon%28%29%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%20%0A%0A%09if%20%28e.button%20%3D%3D%201%29%20%7B%0A%09%0A%09%09setModeOver%28toolbar.hasAttribute%28%22_over%22%29%29%3B%0A%09%09setIcon%28%29%3B%0A%09%09return%3B%0A%09%7D%0A%09if%20%28e.button%20%21%3D%200%29%20return%3B%0A%09button.checked%20%3D%20%21button.checked%3B%0A%09toolbar.collapsed%20%3D%20%21button.checked%3B%0A%0A%09if%20%28button.checked%29%20%7B%0A%09%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.setAttribute%28%22_checked%22%2C%20%22true%22%29%3B%0A%09%09var%20over%20%3D%20toolbar.getAttribute%28%22_over%22%29%3B%0A%09%09setModeOver%28true%29%3B%0A%09%09over%20%3F%20toolbar.setAttribute%28%22_over%22%2C%20over%29%20%3A%0A%09%09toolbar.removeAttribute%28%22_over%22%29%3B%0A%09%09setIcon%28%29%3B%0A%09%7D%0A%09else%20%7B%0A%09%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09%09toolbar.removeAttribute%28%22_checked%22%29%3B%0A%09%09setModeOver%28%21toolbar.hasAttribute%28%22_over%22%29%29%3B%0A%09%7D%0A%09lock%28%29%3B%0A%7D%0Athis.ondblclick%20%3D%20function%28e%29%20%7B%20setModeOver%28toolbar.hasAttribute%28%22_over%22%29%29%3B%20%7D%0A%0Atoolbar.ondblclick%20%3D%20function%28e%29%20%7B%0A%0A%09if%20%28%20%20%20%20e.button%20%21%3D%202%20%7C%7C%0A%09%09e.target.nodeName%20%3D%3D%20%22toolbarbutton%22%20%7C%7C%0A%09%09e.target.nodeName%20%3D%3D%20%22toolbaritem%22%0A%09%29%20return%3B%0A%0A%09button.click%28%29%3B%0A%09setTimeout%28function%28%29%20%7B%20document.getElementById%28%22toolbar-context-menu%22%29.hidePopup%28%29%3B%20%7D%2C%2050%29%3B%0A%09setModeOver%28%21toolbar.hasAttribute%28%22_over%22%29%29%3B%0A%7D%0A%0Aif%20%28%21toolbar.hasAttribute%28%22_checked%22%29%29%20%7B%0A%09browser.addEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%7D%0Aelse%20%7B%20button.checked%20%3D%20true%3B%20lock%28%29%3B%20%7D%0A%0Aif%20%28toolbar.hasAttribute%28%22_over%22%29%29%20%7B%20setModeOver%28false%29%3B%20lock%28%29%3B%20%7D%0A%0AgNavToolbox.addEventListener%28%22beforecustomization%22%2C%20beforeCustomize%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22customizationchange%22%2C%20customizationChange%2C%20false%29%3B%0AgNavToolbox.addEventListener%28%22aftercustomization%22%2C%20afterCustomize%2C%20false%29%3B%0A%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%0A%09browser.removeEventListener%28%22mousemove%22%2C%20collapser%2C%20false%29%3B%0A%09if%20%28%21toolbar.hasAttribute%28%22customizing%22%29%29%20removeListeners%28%29%3B%0A%09try%20%7B%20getAttr_pref%28%29%20%7D%20catch%28err%29%20%7B%20return%3B%20%7D%0A%09setAttr_pref%28%29%3B%0A%7D%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отредактировано Dumby (17-10-2012 05:40:37)

Отсутствует

 

№500017-10-2012 06:58:07

leex
Участник
 
Группа: Members
Зарегистрирован: 24-03-2011
Сообщений: 322
UA: Firefox 16.0

Re: Custom Buttons

Привет!
Ребята подскажите пожалуйста есть ли готовая кнопка для переключения пользовательских словарей? 
Кнопка проверки орографии с русского на английский на  и наоборот?

Спасибо

Отсутствует

 

Board footer

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