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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№652627-06-2013 22:58:29

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

Re: Custom Buttons

Indomito пишет:

P.S. Вродеf это фрагмент чего то... ПКМ(он должен отрабатывать вставку из буфера обмена) не работает или я что то не пронял.

СКМ

Отсутствует

 

№652727-06-2013 23:10:52

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 22.0

Re: Custom Buttons

bunda1 сорри за тупость, просто мыша перепрограммирована и на CKM стоит клавиша F1... забыл перед запуском проверить :)
Значит ПКМ=2 ?

UPD Глянул свой скрипт обработки, да двойка... извиняюсь - ступил что то... может просто в Москве жарко :D

Отредактировано Indomito (27-06-2013 23:13:17)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№652827-06-2013 23:46:42

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 22.0

Re: Custom Buttons

okkamas_knife да знаю я знаю... сам же обработчик писал, просто что то "тормознул":D


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№652928-06-2013 10:40:40

Kiril__777
Участник
 
Группа: Members
Зарегистрирован: 13-07-2009
Сообщений: 388
UA: Firefox 20.0

Re: Custom Buttons

Lex1 пишет:

Тогда придётся вставлять перед следующим элементом, т.е.

так и не понял, "перед" это "меню перед" или что?

Выделить код

Код:

nextEleMenu = nextEleMenu.nextSibling;

вставил в конец кода ничего хорошего не получилось. заменял nextEleMenu на nextEleMenu.nextSibling и на nextSibling - тоже ничего.
bunda1
если бы я понимал что там толкуют, то обращался бы сюда

Синтаксис
nodeObject.nextSibling

вставил, он не работает :(

Отсутствует

 

№653028-06-2013 15:50:57

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

Re: Custom Buttons

voqabuhe пишет:

сразу в панель закладок попадать

На крайний случай

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

Выделить код

Код:

const [toolbar, fPopup, popup] =
["toolbar-menubar", "bookmarksMenuPopup", "bookmarksToolbarFolderPopup"]
.map(function(id) document.getElementById(id));

if (popup.state == "closed") {
    const props = ["toolbar._setActive", "fPopup.style.maxWidth", "fPopup.style.maxHeight"];
    const sets = ["Function()", 0, 0];

    const baks = props.map(function(prop, i) i ? eval(prop).quote() : eval(prop));
    props.forEach(function(prop, i) eval(prop + " = " + sets[i]));

    fPopup.openPopup();
    popup.openPopupAtScreen(event.screenX, event.screenY);
    popup.addEventListener("popuphidden", function ph(e) {
        if (e.target != popup) return;
        popup.removeEventListener("popuphidden", ph, false);
        props.forEach(function(prop, i) eval(prop + " = " + baks[i]));
    }, false);
}


villa7 пишет:

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

Может так

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

Выделить код

Код:

(function() {
    function onPS(e) {
        if (e.originalTarget.nodeName != "tooltip" || window.__attributesInspector) return;
        var node = e.originalTarget.ownerDocument.tooltipNode;
        for (; node && !(node instanceof HTMLAnchorElement); node = node.parentNode);
        !node && e.preventDefault();
    }
    const observer = {
        observe: function(win) win.addEventListener("load", this, false),
        handleEvent: function(e) {
            var doc = e.target;
            var win = doc.defaultView;
            win.removeEventListener("load", this, false);
            if (doc.location.href == "chrome://browser/content/browser.xul" || win.cbttp) return;
            win.cbttp = true;
            win.addEventListener("popupshowing", onPS, true);
            win.addEventListener("unload", function onUL() {
                win.removeEventListener("unload", onUL, false);
                win.removeEventListener("popupshowing", onPS, true);
            }, false)
        }
    }
    addEventListener("popupshowing", onPS, true);
    Services.obs.addObserver(observer, "domwindowopened", false);
    addDestructor(function() Services.obs.removeObserver(observer, "domwindowopened"));
})();

Отсутствует

 

№653128-06-2013 17:09:20

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

Re: Custom Buttons

Dumby

Может так

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


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

Отсутствует

 

№653228-06-2013 20:07:18

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 22.0

Re: Custom Buttons

Kiril__777
После var nextEleMenu = document.getElementById("context-inspect");
Но лучше вместо "context-inspect" прописать нужный пункт. Посмотреть его можно кнопкой Attributes Inspector.

Отсутствует

 

№653328-06-2013 20:17:09

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

Re: Custom Buttons

Dumby
А не подскажешь как узнать над каким элементам находится курсор без специальных обработчиков типа mouseover. Мне нужно чтобы код который ниже не блокировал показ notification-popup если курсор находится над определенный кнопкой в адресной строке document.getElementById("plugins-notification-icon"). Не хочется ставить и поверять лишние атрибуты на этой кнопке:

Выделить код

Код:

addEventListener("popupshowing", function(e) {
   if ( e.target.id !== "notification-popup") return;
        e.preventDefault()
}, true, window );

Отредактировано bunda1 (28-06-2013 20:19:20)

Отсутствует

 

№653428-06-2013 22:04:16

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

Re: Custom Buttons

bunda1 пишет:

как узнать над каким элементам находится курсор без специальных обработчиков

Можно проверить document.querySelector("#plugins-notification-icon:hover"), но такая проверка может быть не очень быстрой.


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

Отсутствует

 

№653528-06-2013 22:15:04

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 25.0

Re: Custom Buttons

Dumby пишет:

На крайний случай

Какой крайний, о чём ты говоришь? Это именно то,  что я и просил. Просто отлично, большое спасибо.

Отсутствует

 

№653628-06-2013 22:17:40

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

Re: Custom Buttons

Infocatcher пишет:

Можно проверить document.querySelector("#plugins-notification-icon:hover"), но такая проверка может быть не очень быстрой.

Спасибо, тогда вопрос снимается.

Отсутствует

 

№653728-06-2013 23:25:09

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

Re: Custom Buttons

bunda1
Ну, это в теории, мне просто проверять лень. :)
А так, если вызывать не очень часто, то все равно должно быть лучше, чем обработка перемещения мыши.


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

Отсутствует

 

№653829-06-2013 00:48:23

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

Re: Custom Buttons

Infocatcher пишет:

bunda1
А так, если вызывать не очень часто, то все равно должно быть лучше, чем обработка перемещения мыши.

Нет не часто, ну тогда это годится, отлично :)

Отсутствует

 

№653929-06-2013 14:46:05

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

Re: Custom Buttons

Может кому надо:

Выделить код

Код:

// Обработчик следит за всплывающими подсказками и запускают нужные коды и функции ................................
addEventListener("popupshowing", function(e) {
   
   // блокировать лишние тултипы в адресной строке ....   
   var node = document.tooltipNode
   if ( node && node.id && ["go-button", "identity-box", "page-proxy-favicon"].indexOf( node.id ) !== -1 ) { 
        e.preventDefault();
        }
        
   // блокировать произвольное открытие запроса 'Вы хотите включить плагины на этой странице?' ....
   else if ( !document.querySelector("#plugins-notification-icon:hover") && e.target.getAttribute('popupid') == 'click-to-play-plugins' )
             e.preventDefault();     
}, true );

Отредактировано bunda1 (30-06-2013 01:53:47)

Отсутствует

 

№654029-06-2013 14:52:56

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 22.0

Re: Custom Buttons

bunda1 ни разу такой запрос не встречал, а когда он возникает то? Ну по уму понятно, но просто я включал выключал но накого вопроса мне не задавали. :|


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№654129-06-2013 15:16:14

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

Re: Custom Buttons

Indomito пишет:

bunda1 ни разу такой запрос не встречал, а когда он возникает то? Ну по уму понятно, но просто я включал выключал но накого вопроса мне не задавали. :|

27-06-2013 17:57:40

Отсутствует

 

№654229-06-2013 15:22:14

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 22.0

Re: Custom Buttons

bunda1 прикольно - спс за информацию.


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№654329-06-2013 17:31:59

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 25.0

Re: Custom Buttons

bunda1
После ПКМ - Настроить кнопки "Memory Monitor" и "Изменить масштаб" меняются местами, кроме того изменяется интервал между всеми элементами адресной строки. Можешь поправить?
http://i.imgur.com/fLcU3Xq.jpg

Отсутствует

 

№654429-06-2013 17:57:05

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

Re: Custom Buttons

Попробуй:

Выделить код

Код:

// Отображать потребление памяти в адресной строке ................................
var ucjs_MemoryMonitor = {
  _interval: 2000, // ms
  _prefix: "MB", //B, KB, MB, GB
  _dPrefix: true,  
  interval: null,
  
  init: function() {      
    var memoryPanel = document.createElement("statusbarpanel");
    memoryPanel.id = "MemoryDisplay";
    memoryPanel.setAttribute("label", this.setPrefix(this._dPrefix));
    var urlbar = document.getElementById("urlbar-icons");
    urlbar.insertBefore( memoryPanel, urlbar.lastChild );
    addDestructor(function() { urlbar.removeChild( memoryPanel ) });
    
    this.start();
    this.interval = setInterval(this.start, this._interval);
     
  addFigure: function (str) {
    var num = new String(str).replace(/,/g, "");
    while (num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
    return num;
  },

  getSize: function( mem, flag ) {
    var pre = 1;
    switch (this._prefix) {
      case 'KB':
        pre = 1024;
        break;
      case 'MB':
        pre = 1024 * 1024;
        break;
      case 'GB':
        pre = 1024 * 1024 * 1024;
        break;
    }
    if ( flag ) return mem * pre;
    else return ucjs_MemoryMonitor.addFigure(Math.round(mem / pre));
  },

  setPrefix: function (flag) {
    return (flag) ? " " + this._prefix : "";
  },

  start: function () {
    try {
      const Cc = Components.classes;
      const Ci = Components.interfaces;
      var mgr = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      var e = mgr.enumerateReporters();
      var gMemReporters = {};
      while ( e.hasMoreElements() ) {
              var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
              gMemReporters[mr.path] = mr;
              }
      var workingSet = gMemReporters["resident"].amount;
      var reset = ucjs_MemoryMonitor.getSize(ucjs_MemoryMonitor._maxMemory, true);
      var memoryPanel = document.getElementById("MemoryDisplay");
      memoryPanel.setAttribute("label", ucjs_MemoryMonitor.getSize(workingSet) + ucjs_MemoryMonitor.setPrefix(ucjs_MemoryMonitor._dPrefix));
      memoryPanel.style.minWidth = "5.5em";
      memoryPanel.style.textAlign = "right";
    } 
    catch (e) { clearInterval(ucjs_MemoryMonitor.interval) };
  }
}
ucjs_MemoryMonitor.init();

Отредактировано bunda1 (29-06-2013 17:57:57)

Отсутствует

 

№654529-06-2013 18:58:04

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 25.0

Re: Custom Buttons

bunda1 пишет:

Попробуй:

Не катит. Сразу пропадает из адресной строки "Memory Monitor". а после перезагрузки исчезает и  "Изменить масштаб"

Отсутствует

 

№654629-06-2013 19:11:12

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

Re: Custom Buttons

voqabuhe пишет:

Не катит. Сразу пропадает из адресной строки "Memory Monitor". а после перезагрузки исчезает и  "Изменить масштаб"

Выделить код

Код:

// Кнопка для управления масштабом страницы в адресной строке ................................
var zoomButton = {    
   
   init: function() {
       
        // Создать настройку в 'about:config' если не существует .....
        if ( !custombuttons.isPref("zoom.allEvenly") ) custombuttons.getPref("zoom.allEvenly", false);   
   
        /* Следим за изменением масштаба, переключением режима отображения масштаба, переключением на другую вкладку
           и запускаем изменения отображения масштаба на кнопке или установку единого масштаба ....*/    
        var cmd = "gPrefService.setCharPref('zoom.Percent', ZoomManager.zoom.toFixed(2)); zoomButton.update(); $&";
        eval("ZoomManager.toggleZoom = " + ZoomManager.toggleZoom.toString().replace(/}$/, cmd));
        eval("FullZoom.reset = " + FullZoom.reset.toString().replace(/}$/, cmd));
        eval("FullZoom.enlarge = " + FullZoom.enlarge.toString().replace(/}$/, cmd));
        eval("FullZoom.reduce = " + FullZoom.reduce.toString().replace(/}$/, cmd));
        eval("FullZoom._handleMouseScrolled = " + FullZoom._handleMouseScrolled.toString().replace(/}$/, cmd));
        
        addEventListener("TabAttrModified", function(e) {        
           if ( e.target.linkedBrowser.currentURI.spec == getBrowser().currentURI.spec ) {          
                zoomButton.setAllZoom(); 
                zoomButton.update();
                }
        }, true, gBrowser.tabContainer );


        // Создаём кнопку в адресной строке ....
        var zoomPanel = document.createElement("statusbarpanel");
        zoomPanel.setAttribute("id", "zoomButton");
        zoomPanel.setAttribute("context", "event.stopPropagation()");
        var text = "Л: менять масштаб страницы / только текста\nС: единый масштаб для всех страниц / для сайта \nП: сбросить масштаб на 100% ";
        zoomPanel.setAttribute("tooltiptext", text);        
        addDestructor(function() { urlbar.removeChild( zoomPanel ) });
        
        var urlbar = document.getElementById("urlbar-icons"); // перемещаем кнопку в адресную строку 
        urlbar.insertBefore( zoomPanel, urlbar.lastChild );

        zoomButton.update(); // включаем показ масштаба на кнопке
            
        
        // Менять масштаб колесиком мыши на кнопке ....
        addEventListener("DOMMouseScroll", function(e) {
           ( e.detail > 0 )? FullZoom.reduce(): FullZoom.enlarge();
        }, false, zoomPanel );
 
         
        // Настройка функций кликов мыши на кнопке масштаба ....
        addEventListener("click", function(e) { 
                  
           // ЛКМ переключает режим изминения масштаба( страницы или только текста )
           if ( e.button == 0 ) document.getElementById("cmd_fullZoomToggle").doCommand();

           // СКМ переключает единый масштаб для всех страниц /для сайта
           if ( e.button == 1) {
                custombuttons.setPrefs("zoom.allEvenly", !custombuttons.getPrefs("zoom.allEvenly") );
                custombuttons.setPrefs("zoom.Percent", ZoomManager.zoom.toFixed(2) );
                
                zoomButton.update();
                }
                  
            // ПКМ сбросит масштаб на 100%
            if ( e.button == 2) FullZoom.reset();
               
        }, false, zoomPanel ); 
   },    
    
     
   // Устанавливать единый масштаб для всех страниц если это разрешено в 'about:config' ....
   setAllZoom: function() { 
     if ( custombuttons.getPrefs("zoom.allEvenly") ) {
           var Z_value = custombuttons.getPrefs("zoom.Percent");
           if ( ZoomManager.zoom.toFixed(2) == Z_value ) return;
               
           // исключения - страницы на которых функция не сработает ....
           if (/about:|fastdial|extensions.xul|bookmarksPanel.xul|console.xul/.test( content.location.href ) ) return;

           getBrowser().markupDocumentViewer.fullZoom = Z_value;
           getBrowser().markupDocumentViewer.textZoom = Z_value;
               }
   },         

        
   // Показывать текущий масштаб страницы на кнопке и изменять цвет и шрифт отображения масштаба ....
   update: function() {
        var Zoom = document.getElementById("zoomButton");
        Zoom.setAttribute("label", Math.floor((ZoomManager.zoom + 0.005) * 100) + "%");
        
        Zoom.style.MozAppearance = "none"; // стиль для кнопки
        Zoom.style.border = "0px";
        Zoom.style.marginRight = "-20px";
        Zoom.style.fontWeight = ZoomManager.useFullZoom ? '' : 'bold';
        Zoom.style.color = custombuttons.getPrefs("zoom.allEvenly") ? "red" : "";        
    }    
};
zoomButton.init();



// Отображать потребление памяти в адресной строке ................................
var ucjs_MemoryMonitor = {
  _interval: 2000, // ms
  _prefix: "MB", //B, KB, MB, GB
  _dPrefix: true,  
  interval: null,
  
  init: function() {      
    var memoryPanel = document.createElement("statusbarpanel");
    memoryPanel.id = "MemoryDisplay";
    memoryPanel.setAttribute("label", this.setPrefix(this._dPrefix));
    memoryPanel.setAttribute("tooltiptext", "Л: автоматически выгружать память"); 
    var urlbar = document.getElementById("urlbar-icons");
    urlbar.insertBefore( memoryPanel, urlbar.lastChild );
    addDestructor(function() { urlbar.removeChild( memoryPanel ) });
    
    this.start();
    this.interval = setInterval(this.start, this._interval);     
 },

  addFigure: function (str) {
    var num = new String(str).replace(/,/g, "");
    while (num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
    return num;
  },

  getSize: function( mem, flag ) {
    var pre = 1;
    switch (this._prefix) {
      case 'KB':
        pre = 1024;
        break;
      case 'MB':
        pre = 1024 * 1024;
        break;
      case 'GB':
        pre = 1024 * 1024 * 1024;
        break;
    }
    if ( flag ) return mem * pre;
    else return ucjs_MemoryMonitor.addFigure(Math.round(mem / pre));
  },

  setPrefix: function (flag) {
    return (flag) ? " " + this._prefix : "";
  },

  start: function () {
    try {
      const Cc = Components.classes;
      const Ci = Components.interfaces;
      var mgr = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      var e = mgr.enumerateReporters();
      var gMemReporters = {};
      while ( e.hasMoreElements() ) {
              var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
              gMemReporters[mr.path] = mr;
              }
      var workingSet = gMemReporters["resident"].amount;
      var reset = ucjs_MemoryMonitor.getSize(ucjs_MemoryMonitor._maxMemory, true);
      var memoryPanel = document.getElementById("MemoryDisplay");
      memoryPanel.setAttribute("label", ucjs_MemoryMonitor.getSize(workingSet) + ucjs_MemoryMonitor.setPrefix(ucjs_MemoryMonitor._dPrefix));
      memoryPanel.style.minWidth = "5.5em";
      memoryPanel.style.textAlign = "right";
    } 
    catch (e) { clearInterval(ucjs_MemoryMonitor.interval) };
  }
}
ucjs_MemoryMonitor.init();

Отсутствует

 

№654729-06-2013 19:36:34

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 25.0

Re: Custom Buttons

bunda1
Да теперь всё ОК.  Заменял только  "Изменить масштаб". Спасибо.

Отсутствует

 

№654829-06-2013 19:40:56

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

Re: Custom Buttons

Indomito пишет:

проще переписать скрипт используя такой шаблон

Вот еще один шаблон, но он только для меню годится:

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

Выделить код

Код:

// https://gist.github.com/Infocatcher/5891622
var menu = [
    { label: "Alert!", cb_id: "alert" },
    { label: "Google", cb_id: "google", image: "https://www.google.com/favicon.ico" },
    "menuseparator",
    [
        "Menu label",
        { label: "Sub item 1", cb_id: "sub" },
        { label: "Sub item 2", cb_id: "sub2" }
    ],
    [
        "Menu label 2",
        "https://www.google.com/favicon.ico",
        { label: "Sub item 3", cb_id: "sub3" },
        { label: "Sub item 4", cb_id: "sub4" }
    ]
];

function parseItem(arr, parent) {
    if(!parent)
        parent = document.createElement("menupopup");
    arr.forEach(function(item) {
        var node;
        if(item == "menuseparator")
            node = document.createElement("menuseparator");
        else if(Array.isArray(item)) {
            node = document.createElement("menu");
            node.setAttribute("label", item[0]);
            var icon = item[1];
            if(typeof icon == "string") {
                node.className = "menu-iconic";
                node.setAttribute("image", icon);
            }
            var mp = document.createElement("menupopup");
            parseItem(item, mp);
            node.appendChild(mp);
        }
        else if(typeof item == "object" && item) {
            node = document.createElement("menuitem");
            if(item.hasOwnProperty("image") && !item.hasOwnProperty("class"))
                item.class = "menuitem-iconic";
            for(var attr in item) if(item.hasOwnProperty(attr))
                node.setAttribute(attr, item[attr]);
        }
        node && parent.appendChild(node);
    });
    return parent;
}

var mp = parseItem(menu);
mp.setAttribute("oncommand", "this.parentNode.handleCommand(event);");
mp.setAttribute("onclick", "if(event.button != 0) this.parentNode.handleCommand(event);");
mp.setAttribute("oncontextmenu", "return false;");

this.type = "menu";
this.orient = "horizontal";
this.appendChild(mp);

this.handleCommand = function(e) {
    var trg = e.target;
    var cmd = trg.getAttribute("cb_id");
    if(!cmd)
        return;
    var btn = e.type == "click" && e.button || 0;
    btn && closeMenus(trg); // See chrome://browser/content/utilityOverlay.js
    alert("Button: " + btn + "\nCommand: " + cmd);
};

Отредактировано Infocatcher (29-06-2013 19:49:22)


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

Отсутствует

 

№654929-06-2013 20:00:47

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 22.0

Re: Custom Buttons

Infocatcher пишет:

Вот еще один шаблон, но он только для меню годится:

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


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№655029-06-2013 21:53:50

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 25.0

Re: Custom Buttons

bunda1
А как бы в "Memory Monitor" уменьшить  расстояние между значением параметра и единицей измерения.

Отсутствует

 

Board footer

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