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

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

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

gyra (16-09-2017 13:48): Расширения для Firefox/Mozilla Firefox Extensions (часть 9)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

wvxwxvw

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
// Добавить новый пункт "Восстановить иконки закладок" в меню папок закладок, от 16.05.2016. .....................
(function() {
   var menuitem = document.createElement("menuitem");
   menuitem.setAttribute("id", "placesContext_restoreIcons");
   menuitem.setAttribute("label", "Восст.иконки в папке");
   menuitem.setAttribute("selection", "folder");
   menuitem.setAttribute("closemenu", "single");    
   
   menuitem.setAttribute("oncommand", "this.run(document)");  
   menuitem.run = function(doc) {
      var node = PlacesUIUtils.getViewForNode(doc.popupNode).selectedNode;
      var folderId = node.folderItemId ? node.folderItemId : node.itemId;
      var contents = PlacesUtils.getFolderContents(folderId, false, false).root;
       
      // перебрать все http(s) закладки
      for ( i = 0; i < contents.childCount; ++i ) {  
            var item = node.getChild(i);
            item.uri.startsWith("http") && getSiteFavicon(item.uri);
            }  
   };
 
   // Добавить иконки к закладкам с одинаковыми адресами ....  
   function setBookFavicon(faviconURI, siteURI) {LOG(siteURI + "\n" +faviconURI);
      var iconURI = Services.io.newURI(faviconURI, null, null);
      var bookmarkURI = Services.io.newURI(siteURI, null, null);
       
      var faviconService = Cc["@mozilla.org/browser/favicon-service;1"].getService(Ci.mozIAsyncFavicons);      
      faviconService.setAndFetchFaviconForPage(
         bookmarkURI,
         iconURI,
         false,
         faviconService.FAVICON_LOAD_NON_PRIVATE
      )
   };
   
   // Получить адрес иконки закладки и запустить установку иконки ....  
   function getSiteFavicon(siteURI) {
      var hostURI = "http://" + siteURI.split(/\/+/g)[1] + "/";
      var faviconURI = hostURI + "favicon.ico";  // адрес иконки, если не получить адрес иконки из сайта
 
      if ( getSiteFavicon[siteURI] ) return;     // стоп если закладка с таким адресом уже была
      getSiteFavicon[siteURI] = true;  
       
      // получить адрес иконки из документа сайта закладки
      var xhr = new XMLHttpRequest();
      xhr.open("GET", siteURI, true);
      xhr.responseType = "document";      
      xhr.onload = xhr.onerror = function() {
         var doc = xhr.responseXML;
         if ( doc !== null ) {
              var links = doc.getElementsByTagName("link");
              [...links].forEach(function(link) {
                 if ( /(?:^|\s)icon(?:\s|$)/.test(link.rel.toLowerCase()) ) faviconURI = link.href });
              }
                         
         setBookFavicon(faviconURI, siteURI);  // запустить установку иконки    
      }
      xhr.send();
   };
   
   // Добавить новый пункт во все меню папок закладок ....
   function handlePopup(e) {      
      var node = e.target;
      if ( node.id !== 'placesContext' ) return;
       
      var sortByName = node.getElementsByAttribute("id", "placesContext_sortBy:name")[0];    
      setTimeout(()=> { menuitem.setAttribute("disabled", sortByName.disabled) }, 50);
       
      if ( node.getElementsByAttribute("id", "placesContext_deleteDuplicates")[0] ) return;    
      node.insertBefore(menuitem, sortByName);              
   };      
   addEventListener("popupshowing", handlePopup, true, window);
   addDestructor(()=> menuitem.parentNode && menuitem.parentNode.removeChild(menuitem) );
 
})();

Всего записей: 5677 | Зарегистр. 02-04-2015 | Отправлено: 18:34 14-01-2017
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Расширения для Firefox/Mozilla Firefox Extensions (часть 8)
gyra (16-09-2017 13:48): Расширения для Firefox/Mozilla Firefox Extensions (часть 9)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru