Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Расширения для Firefox/Mozilla Firefox Extensions (часть 9)

Модерирует : gyra, Maz

Maz (02-04-2019 17:51): Переезжаем: Расширения для Firefox/Mozilla Firefox Extensions (часть 10)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

exsidas



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
/*Initialization Code*/
// Context Search, от 29.01.2014. ................................
(function () {
   var searchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);  
 
   var searchSelect = document.getElementById('context-searchselect');  
   searchSelect.collapsed = false; // удалить стандартный пункт меню для поиска
 
   
   // Создать новый пункт меню для поиска ....
   var contextMenu = document.getElementById("contentAreaContextMenu");
   var menu = contextMenu.insertBefore( document.createElement('menu'), searchSelect ); // над каким пунктом меню показывать
   menu.setAttribute("class", "menu-iconic");
   
   // устанавливать иконку, название и поисковик для нового пункта меню
   function setMenu() {  
      menu.engine = searchService.currentEngine;
      menu.setAttribute("label", "Искать в...");
         };
   setMenu();    
 
   // наблюдатель за стандартным пунктом меню 'Копировать' прячет меню поиска
   var copy = document.getElementById('context-copy');  
   var setHiddenMenu = new MutationObserver(function() {
          menu.hidden = copy.hidden || copy.disabled;          
   });
   setHiddenMenu.observe( copy, { attributes: true, attributeFilter: ["hidden", "disabled"] } );
   
   
   // Создать подменю с поисковиками ....  
   var menuPopup = menu.appendChild( document.createElement("menupopup") );  
   menuPopup.setAttribute('style', 'overflow: scroll');  
     
   // создать пункты в подменю
   function setItemsToMenuPopup(e) {
      menuPopup.textContent = "";      
 
      var engines = searchService.getVisibleEngines({});
      engines.forEach(function( engine ) {
         var mItem = document.createElement("menuitem");
         mItem.setAttribute("label", engine.name );
         mItem.setAttribute("class", "menuitem-iconic");
         mItem.setAttribute("src", engine.iconURI.spec );
         mItem.engine = engine;
         menuPopup.appendChild( mItem );
      });
 
   };  
   setItemsToMenuPopup();
   
   
   // Установить действие для клика на меню и подменю ....
   menu.setAttribute("onmouseup", "\
      var background = ( event.button == 0 ) ? false : true;\
      var clip = gClipboard.read();\
      goDoCommand('cmd_copy');\
      setTimeout(function() {\
         document.getElementById('contentAreaContextMenu').hidePopup();\
         var submission = event.target.engine.getSubmission( gClipboard.read(), null );\
         gBrowser.loadOneTab( submission.uri.spec, null, null, submission.postData, background, false );\
         gClipboard.write( clip );\
      }, 0);\
   ");      
       
   
   // Наблюдатель за изменениями в поисковиках пересоздаёт меню и подменю ....  
   var getEngineModified = {
      observe: function(subject, topic, data) {  
         if ( /changed|removed|current/.test( data ) ) { setMenu(); setItemsToMenuPopup() };              
      }
   };
   Services.obs.addObserver( getEngineModified, "browser-search-engine-modified", false );    
   
   
   // Удалять наблюдатели и меню, показать стандартный пункт ....
   addDestructor(function() {
      contextMenu.removeChild( menu );            
      setHiddenMenu.disconnect();
      Services.obs.removeObserver( getEngineModified, "browser-search-engine-modified", false );
       
      searchSelect.collapsed = false;  
   });    
 
 
 
})(document.getElementById("contentAreaContextMenu") );  
 

Всего записей: 925 | Зарегистр. 18-10-2010 | Отправлено: 21:04 27-10-2017 | Исправлено: exsidas, 21:05 27-10-2017
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Расширения для Firefox/Mozilla Firefox Extensions (часть 9)
Maz (02-04-2019 17:51): Переезжаем: Расширения для Firefox/Mozilla Firefox Extensions (часть 10)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru