Добавить новый пункт "Восстановить иконки всех закладок" в меню "Закладки"( Firefox 24 + )
Автор: bunda1
Версия: от 04.10.2016.
Описание: Kод добавляет в меню "Закладки" на панели меню новый пункт Восстановить иконки всех закладок который восстанавливает иконки всех закладок у которых нет иконок. Код полезен в случаях если закладок очень много а иконки пропали и вручную их восстанавливать долго.
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.

Выделить код

Код:

// Добавить новый пункт "Восстановить иконки всех закладок" в меню "Закладки", от 04.10.2016. ..............
(()=> {
   // Создать новый пункт в меню "Закладки" ....
   var menuitem = document.createElement("menuitem");
   var sep = document.getElementById("organizeBookmarksSeparator");
   sep.parentNode.insertBefore(menuitem, sep);   
   menuitem.setAttribute("label", "Восстановить иконки всех закладок");
   menuitem.onclick =e=> chooseBookmarks();    
   addDestructor(()=> menuitem.remove());


   // Перебрать все http(s) закладки ....
   function chooseBookmarks(id = 1) {
      var folder = PlacesUtils.getFolderContents(id).root;
   
      folder.QueryInterface(Ci.nsINavHistoryContainerResultNode);
      folder.containerOpen = true;

      for ( var i = 0; i < folder.childCount; i++ ) {
            var child = folder.getChild(i);
   
            PlacesUtils.nodeIsFolder(child)
            ? chooseBookmarks(child.itemId)
            : child.uri.startsWith("http") && child.icon == '' && getSiteFavicon(child.uri);
            }
                       
      folder.containerOpen = false;
   };


   // Добавить иконки к закладкам с одинаковыми адресами ....  
   function setBookFavicon(siteURI, faviconURI) {
      var iconURI = Services.io.newURI( faviconURI, null, null);
      var bookmarkURI = Services.io.newURI( siteURI, null, null );
           
      PlacesUtils.favicons.setAndFetchFaviconForPage(
         bookmarkURI,
         iconURI,
         false,
         this.FAVICON_LOAD_NON_PRIVATE,
         null,
         Services.scriptSecurityManager.getSystemPrincipal()
      )
   };
   
   
   // Получить адрес иконки закладки и запустить установку иконки .... 
   function getSiteFavicon(siteURI) {
      var hostURI = "http://" + siteURI.split(/\/+/g)[1] + "/";
      var faviconURI = hostURI + "favicon.ico";  // адрес иконки, если не получить адрес иконки из сайта
      
      // получить адрес иконки из документа сайта закладки
      var xhr = new XMLHttpRequest();
      xhr.open("GET", siteURI, true);
      xhr.responseType = "document";      
      xhr.onload = xhr.onerror =()=> {
         var doc = xhr.responseXML;
         if ( doc !== null ) {
              var links = doc.getElementsByTagName("link");
              [...links].forEach(link=> {
                 if ( /(?:^|\s)icon(?:\s|$)/.test(link.rel.toLowerCase()) ) faviconURI = link.href });
              }
                         
         setBookFavicon(siteURI, faviconURI);  // запустить установку иконки   
      }
      xhr.send();
   };   
     
})();

Восстановить иконки всех закладок( Firefox 24 + )
Автор: bunda1
Версия: от 04.10.2016.
Описание: Kнопка восстанавливает иконки всех закладок у которых нет иконок. Код полезен в случаях если закладок очень много а иконки пропали и вручную их восстанавливать долго.

Выделить код

Код:

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%3E%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%u0441%u0435%u0445%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis._handleClick%20%3D%28%29%3D%3E%20chooseBookmarks%28%29%3B%0A%0A//%20%u041F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20http%28s%29%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20....%0Afunction%20chooseBookmarks%28id%20%3D%201%29%20%7B%0A%20%20%20var%20folder%20%3D%20PlacesUtils.getFolderContents%28id%29.root%3B%0A%20%20%20%0A%20%20%20folder.QueryInterface%28Ci.nsINavHistoryContainerResultNode%29%3B%0A%20%20%20folder.containerOpen%20%3D%20true%3B%0A%0A%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20folder.childCount%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20child%20%3D%20folder.getChild%28i%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20%20PlacesUtils.nodeIsFolder%28child%29%0A%20%20%20%20%20%20%20%20%20%3F%20chooseBookmarks%28child.itemId%29%0A%20%20%20%20%20%20%20%20%20%3A%20child.uri.startsWith%28%22http%22%29%20%26%26%20child.icon%20%3D%3D%20%27%27%20%26%26%20getSiteFavicon%28child.uri%29%3B%0A%20%20%20%20%20%20%20%20%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%0A%20%20%20folder.containerOpen%20%3D%20false%3B%0A%7D%3B%0A%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%20%u0441%20%u043E%u0434%u0438%u043D%u0430%u043A%u043E%u0432%u044B%u043C%u0438%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20....%20%20%0Afunction%20setBookFavicon%28siteURI%2C%20faviconURI%29%20%7B%0A%20%20%20var%20iconURI%20%3D%20Services.io.newURI%28faviconURI%2C%20null%2C%20null%29%3B%0A%20%20%20var%20bookmarkURI%20%3D%20Services.io.newURI%28siteURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20PlacesUtils.favicons.setAndFetchFaviconForPage%28%0A%20%20%20%20%20%20bookmarkURI%2C%0A%20%20%20%20%20%20iconURI%2C%0A%20%20%20%20%20%20false%2C%0A%20%20%20%20%20%20this.FAVICON_LOAD_NON_PRIVATE%2C%0A%20%20%20%20%20%20null%2C%0A%20%20%20%20%20%20Services.scriptSecurityManager.getSystemPrincipal%28%29%0A%20%20%20%29%0A%7D%3B%0A%20%20%20%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20....%20%0Afunction%20getSiteFavicon%28siteURI%29%20%7B%0A%20%20%20var%20hostURI%20%3D%20%22http%3A//%22%20+%20siteURI.split%28/%5C/+/g%29%5B1%5D%20+%20%22/%22%3B%0A%20%20%20var%20faviconURI%20%3D%20hostURI%20+%20%22favicon.ico%22%3B%20%20//%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0441%u0430%u0439%u0442%u0430%0A%20%20%20%20%20%20%0A%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0434%u043E%u043A%u0443%u043C%u0435%u043D%u0442%u0430%20%u0441%u0430%u0439%u0442%u0430%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20xhr.open%28%22GET%22%2C%20siteURI%2C%20true%29%3B%0A%20%20%20xhr.responseType%20%3D%20%22document%22%3B%20%20%20%20%20%20%0A%20%20%20xhr.onload%20%3D%20xhr.onerror%20%3D%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20var%20doc%20%3D%20xhr.responseXML%3B%0A%20%20%20%20%20%20if%20%28%20doc%20%21%3D%3D%20null%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20links%20%3D%20doc.getElementsByTagName%28%22link%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%5B...links%5D.forEach%28link%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20/%28%3F%3A%5E%7C%5Cs%29icon%28%3F%3A%5Cs%7C%24%29/.test%28link.rel.toLowerCase%28%29%29%20%29%20faviconURI%20%3D%20link.href%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%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%0A%20%20%20%20%20%20setBookFavicon%28siteURI%2C%20faviconURI%29%3B%20%20//%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20%20%20%0A%20%20%20%7D%0A%20%20%20xhr.send%28%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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

Добрый день, спасибо за ответ.
Поясните ещё пожалуйста как добавить / редактировать иконки действующих закладок?
нашёл ответ вот здесь https://forum.mozilla-russia.org/viewtopic.php?pid=659356#p659356
но с кодированием совершенно не знаком. У меня например банально нет этого файла userchrome.css

Только убедитесь, что Вы создали файл userchrome.css а не userchrome.css.txt

Уважаемый bunda1,
в Вашем коде есть такой участок:

Выделить код

Код:

var hostURI = "http://" + siteURI.split(/\/+/g)[1] + "/";
      var faviconURI = hostURI + "favicon.ico";  // адрес иконки, если не получить адрес иконки из сайта

то есть, если адрес иконки сайта получить не удаётся, то предполагается, что он: http://" + siteURI.split(/\/+/g)[1] + "/favicon.ico";
Для некоторых сайтов есть такой фавикон, например - http://forum-pravda.ru/favicon.ico но для многих (думаю, для большинства) - нет, увы.
У меня есть вопрос - как проверить, есть такой URL http://" + siteURI.split(/\/+/g)[1] + "/favicon.ico" или нет (без открытия вкладки, естественно). или как-то проверить - получается ли унылый, безликий фавикон или нет?
Спасибо

difabor

Выделить код

Код:

var hostURI = "http://" + siteURI.split(/\/+/g)[1] + "/";
var faviconURI = hostURI + "favicon.ico";  // адрес иконки, если не получить адрес иконки из сайта

Ну это не серёзно, сработает только если угадать адрес фавиконки, на случай если сервер на котором сайт не отвечает.

У меня есть вопрос - как проверить, есть такой URL http://" + siteURI.split(/\/+/g)[1] + "/favicon.ico" или нет (без открытия вкладки, естественно)

Выделить код

Код:

var siteURI = "http://translit.net/keyboard/";
      var favURI = "http://" + siteURI.split(/\/+/g)[1] + "/favicon.ico" 
      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 });
              }
                         
         alert(faviconURI ==  favURI);  
      }
      xhr.send();

Но наверно это не то что ты хотел узнать.

Спасибо, bunda1, я попробую поиграться. Если что-то получится - расскажу

difabor пишет

Спасибо, bunda1, я попробую поиграться. Если что-то получится - расскажу

А что должно получится?

Если Вы помните, в своё время я с Вашей помощью написал кнопку [CB] Показывать иконки сайтов, у которых их нет, в табах и адр. строке
Поступил запрос - добавить этот трюк и в восстановление иконок закладок. Чтобы "безликие", "унылые"сайты тоже приобрели нечто типа иконки.
Для этого мне надо ту функцию генерации иконок присобачить и к восстановлению иконок в закладках.
Я поиграюсь и расскажу что получилось.

difabor пишет

Поступил запрос - добавить этот трюк и в восстановление иконок закладок. Чтобы "безликие", "унылые"сайты тоже приобрели нечто типа иконки.

Ты хочешь добавить к закладкам без иконок сайта свои иконки, я правильно понял?

bunda1 пишет
difabor пишет

Поступил запрос - добавить этот трюк и в восстановление иконок закладок. Чтобы "безликие", "унылые"сайты тоже приобрели нечто типа иконки.

Ты хочешь добавить к закладкам без иконок сайта свои иконки, я правильно понял?

Да, которые в "Справке".
Иными словами, я хочу объединить две кнопки

Уважаемый bunda1,
мне частично удалось присобачить свои иконки к закладкам: все обычные безликие сайты, не имевшие фавиконов приобрели мои иконки, совпадающие с теми, которые на табах.
Что не удалось:
Присобачить иконки к
1)about:...
2)chrome://
3)javascript
4)фидам типа http://lenta.ru/rss/ или http://www.gazeta.ru/export/rss/lastnews.xml или http://trim-c.livejournal.com/data/atom
При этом замена

Выделить код

Код:

: child.uri.startsWith("http") && child.icon == '' && getSiteFavicon( child.uri );

на

Выделить код

Код:

: (child.uri.startsWith("http") || child.uri.startsWith("chrome")) && child.icon == '' && getSiteFavicon( child.uri );

или

Выделить код

Код:

: (child.uri.startsWith("http") || child.uri.startsWith("about")) && child.icon == '' && getSiteFavicon( child.uri );

не помогла

Ну если так:

Выделить код

Код:

child.icon == '' && getSiteFavicon( child.uri );

Не помогает, увы :(

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

Stakhovsky пишет

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

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

bunda1
Так они не пропадают, не всегда добавляется иконка когда добавляю закладку.

13-05-2016 22:07:05
Например я надобавлял закладок но на некоторых нет иконок, я нажимаю "Восстановить иконки всех закладок" и обновляются закладки у которых нет значка.
Но когда очень много закдалок они как то все анализируются что занимает много времени и ощутимо на работе браузера.
Если можно добавить пункт в контекстное меню папки закладок, что бы обновлялись закладки только в одной нужной папке.

Stakhovsky пишет

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

:/

Выделить код

Код:

// Добавить новый пункт "Восстановить иконки закладок" в меню папок закладок, от 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) );

})();

bunda1
Просто бомба) класс, благодарю.

bunda1, Спасибо Вам за труд, это то, что надо!! Только есть небольшой нюансик, если этот код вставить в кнопку ниже кода: «Добавить новый пункт "Удалить дубликаты закладок" в меню папок закладок» (если он присутствует в кнопке), то тогда код "Восстановить иконки закладок" в меню папок закладок»  не работает и в меню папок закладок ничего не появляется.

P.S.
Можно добавить в оисание кнопки, чтобы в будущем не возникали вопросы - "почему не работает")

brom113 пишет

если этот код вставить в кнопку ниже кода: «Добавить новый пункт "Удалить дубликаты закладок" в меню папок закладок» (если он присутствует в кнопке), то тогда код "Восстановить иконки закладок" в меню папок закладок»  не работает и в меню папок закладок ничего не появляется.

Спасибо. Надо будет исправить.

Ребята, всем спасибо, сделал кнопку.

Как выглядит
kiss_5kb.1467286728.png

Код кнопки

Выделить код

Код:

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%3E%u0414%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u043F%u0443%u043D%u043A%u0442%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%20%u044D%u0442%u043E%u0439%20%u043F%u0430%u043F%u043A%u0435%22%20%u0432%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0430%u043F%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%20%u0432%20%u043C%u0435%u043D%u044E%20%u043F%u0430%u043F%u043E%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%2C%20%u043E%u0442%2016.05.2016.%20.....................%0A%28function%28%29%20%7B%0A%20%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20menuitem.setAttribute%28%22id%22%2C%20%22placesContext_restoreIcons%22%29%3B%0A%20%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%20%u044D%u0442%u043E%u0439%20%u043F%u0430%u043F%u043A%u0435%22%29%3B%0A%20%20%20menuitem.setAttribute%28%22selection%22%2C%20%22folder%22%29%3B%0A%20%20%20menuitem.setAttribute%28%22closemenu%22%2C%20%22single%22%29%3B%20%20%20%0A%20%20%0A%20%20%20menuitem.setAttribute%28%22oncommand%22%2C%20%22this.run%28document%29%22%29%3B%20%0A%20%20%20menuitem.run%20%3D%20function%28doc%29%20%7B%0A%20%20%20%20%20%20var%20node%20%3D%20PlacesUIUtils.getViewForNode%28doc.popupNode%29.selectedNode%3B%0A%20%20%20%20%20%20var%20folderId%20%3D%20node.folderItemId%20%3F%20node.folderItemId%20%3A%20node.itemId%3B%0A%20%20%20%20%20%20var%20contents%20%3D%20PlacesUtils.getFolderContents%28folderId%2C%20false%2C%20false%29.root%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20http%28s%29%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20%20%20%20for%20%28%20i%20%3D%200%3B%20i%20%3C%20contents.childCount%3B%20++i%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20item%20%3D%20node.getChild%28i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20item.uri.startsWith%28%22http%22%29%20%26%26%20getSiteFavicon%28item.uri%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%0A%20%20%20%7D%3B%0A%0A%20%20%20//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%20%u0441%20%u043E%u0434%u0438%u043D%u0430%u043A%u043E%u0432%u044B%u043C%u0438%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20....%20%20%0A%20%20%20function%20setBookFavicon%28faviconURI%2C%20siteURI%29%20%7BLOG%28siteURI%20+%20%22%5Cn%22%20+faviconURI%29%3B%0A%20%20%20%20%20%20var%20iconURI%20%3D%20Services.io.newURI%28faviconURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20var%20bookmarkURI%20%3D%20Services.io.newURI%28siteURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20faviconService%20%3D%20Cc%5B%22@mozilla.org/browser/favicon-service%3B1%22%5D.getService%28Ci.mozIAsyncFavicons%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20faviconService.setAndFetchFaviconForPage%28%0A%20%20%20%20%20%20%20%20%20bookmarkURI%2C%0A%20%20%20%20%20%20%20%20%20iconURI%2C%0A%20%20%20%20%20%20%20%20%20false%2C%0A%20%20%20%20%20%20%20%20%20faviconService.FAVICON_LOAD_NON_PRIVATE%0A%20%20%20%20%20%20%29%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20....%20%0A%20%20%20function%20getSiteFavicon%28siteURI%29%20%7B%0A%20%20%20%20%20%20var%20hostURI%20%3D%20%22http%3A//%22%20+%20siteURI.split%28/%5C/+/g%29%5B1%5D%20+%20%22/%22%3B%0A%20%20%20%20%20%20var%20faviconURI%20%3D%20hostURI%20+%20%22favicon.ico%22%3B%20%20//%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0441%u0430%u0439%u0442%u0430%0A%0A%20%20%20%20%20%20if%20%28%20getSiteFavicon%5BsiteURI%5D%20%29%20return%3B%20%20%20%20%20//%20%u0441%u0442%u043E%u043F%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%20%u0441%20%u0442%u0430%u043A%u0438%u043C%20%u0430%u0434%u0440%u0435%u0441%u043E%u043C%20%u0443%u0436%u0435%20%u0431%u044B%u043B%u0430%0A%20%20%20%20%20%20getSiteFavicon%5BsiteURI%5D%20%3D%20true%3B%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0434%u043E%u043A%u0443%u043C%u0435%u043D%u0442%u0430%20%u0441%u0430%u0439%u0442%u0430%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20%20%20%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20%20%20%20xhr.open%28%22GET%22%2C%20siteURI%2C%20true%29%3B%0A%20%20%20%20%20%20xhr.responseType%20%3D%20%22document%22%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20xhr.onload%20%3D%20xhr.onerror%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20xhr.responseXML%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20doc%20%21%3D%3D%20null%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20links%20%3D%20doc.getElementsByTagName%28%22link%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...links%5D.forEach%28function%28link%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20/%28%3F%3A%5E%7C%5Cs%29icon%28%3F%3A%5Cs%7C%24%29/.test%28link.rel.toLowerCase%28%29%29%20%29%20faviconURI%20%3D%20link.href%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%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%0A%20%20%20%20%20%20%20%20%20setBookFavicon%28faviconURI%2C%20siteURI%29%3B%20%20//%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20%20%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20xhr.send%28%29%3B%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u0432%u043E%20%u0432%u0441%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0430%u043F%u043E%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20....%0A%20%20%20function%20handlePopup%28e%29%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20var%20node%20%3D%20e.target%3B%0A%20%20%20%20%20%20if%20%28%20node.id%20%21%3D%3D%20%27placesContext%27%20%29%20return%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20sortByName%20%3D%20node.getElementsByAttribute%28%22id%22%2C%20%22placesContext_sortBy%3Aname%22%29%5B0%5D%3B%20%20%20%20%0A%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20%7B%20menuitem.setAttribute%28%22disabled%22%2C%20sortByName.disabled%29%20%7D%2C%2050%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20node.getElementsByAttribute%28%22id%22%2C%20%22placesContext_deleteDuplicates%22%29%5B0%5D%20%29%20return%3B%20%20%20%0A%20%20%20%20%20%20node.insertBefore%28menuitem%2C%20sortByName%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%3B%20%20%20%20%20%0A%20%20%20addEventListener%28%22popupshowing%22%2C%20handlePopup%2C%20true%2C%20window%29%3B%0A%20%20%20addDestructor%28%28%29%3D%3E%20menuitem.parentNode%20%26%26%20menuitem.parentNode.removeChild%28menuitem%29%20%29%3B%0A%0A%7D%29%28%29%3B%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

citehala
Выглядит он а совсем не так, а раз в пять больше.

citehala, а нельзя ли добавить в эту кнопку возможность восстановления всех иконок по левому клику на саму кнопку?

difabor пишет

citehala, а нельзя ли добавить в эту кнопку возможность восстановления всех иконок по левому клику на саму кнопку?

Выделить код

Код:

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%3E%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%u0441%u0435%u0445%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%u0441%u0435%u0445%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%20%u0432%20%u043C%u0435%u043D%u044E%20%22%u0417%u0430%u043A%u043B%u0430%u0434%u043A%u0438%22%2C%20%u043E%u0442%2002.08.2014.%20................................%0A%28function%28%29%20%7B%0A%20%20%20self._handleClick%20%3D%28%29%3D%3E%20chooseBookmarks%281%29%3B%0A%0A%0A%20%20%20//%20%u041F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20http%28s%29%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20....%20%0A%20%20%20function%20chooseBookmarks%28%20id%20%29%20%7B%0A%20%20%20%20%20%20var%20folder%20%3D%20PlacesUtils.getFolderContents%28%20id%20%29.root%3B%0A%20%20%20%0A%20%20%20%20%20%20folder.QueryInterface%28Ci.nsINavHistoryContainerResultNode%29%3B%0A%20%20%20%20%20%20folder.containerOpen%20%3D%20true%3B%0A%0A%20%20%20%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20folder.childCount%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20child%20%3D%20folder.getChild%28i%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20PlacesUtils.nodeIsFolder%28%20child%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%3F%20chooseBookmarks%28%20child.itemId%20%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%3A%20child.uri.startsWith%28%22http%22%29%20%26%26%20child.icon%20%3D%3D%20%27%27%20%26%26%20getSiteFavicon%28%20child.uri%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%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%0A%20%20%20%20%20%20folder.containerOpen%20%3D%20false%3B%0A%20%20%20%7D%3B%0A%0A%0A%20%20%20//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%20%u0441%20%u043E%u0434%u0438%u043D%u0430%u043A%u043E%u0432%u044B%u043C%u0438%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20....%20%20%0A%20%20%20function%20setBookFavicon%28%20faviconURI%2C%20siteURI%20%29%20%7B%0A%20%20%20%20%20%20var%20iconURI%20%3D%20Services.io.newURI%28%20faviconURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20var%20bookmarkURI%20%3D%20Services.io.newURI%28%20siteURI%2C%20null%2C%20null%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20faviconService%20%3D%20Cc%5B%22@mozilla.org/browser/favicon-service%3B1%22%5D.getService%28Ci.mozIAsyncFavicons%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20faviconService.setAndFetchFaviconForPage%28%0A%20%20%20%20%20%20%20%20%20bookmarkURI%2C%0A%20%20%20%20%20%20%20%20%20iconURI%2C%0A%20%20%20%20%20%20%20%20%20false%2C%0A%20%20%20%20%20%20%20%20%20faviconService.FAVICON_LOAD_NON_PRIVATE%0A%20%20%20%20%20%20%29%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20....%20%0A%20%20%20function%20getSiteFavicon%28%20siteURI%20%29%20%7B%0A%20%20%20%20%20%20var%20hostURI%20%3D%20%22http%3A//%22%20+%20siteURI.split%28/%5C/+/g%29%5B1%5D%20+%20%22/%22%3B%0A%20%20%20%20%20%20var%20faviconURI%20%3D%20hostURI%20+%20%22favicon.ico%22%3B%20%20//%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0441%u0430%u0439%u0442%u0430%0A%0A%20%20%20%20%20%20if%20%28%20getSiteFavicon%5BsiteURI%5D%20%29%20return%3B%20%20%20%20%20//%20%u0441%u0442%u043E%u043F%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%20%u0441%20%u0442%u0430%u043A%u0438%u043C%20%u0430%u0434%u0440%u0435%u0441%u043E%u043C%20%u0443%u0436%u0435%20%u0431%u044B%u043B%u0430%0A%20%20%20%20%20%20getSiteFavicon%5BsiteURI%5D%20%3D%20true%3B%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0434%u043E%u043A%u0443%u043C%u0435%u043D%u0442%u0430%20%u0441%u0430%u0439%u0442%u0430%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20%20%20%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20%20%20%20xhr.open%28%22GET%22%2C%20siteURI%2C%20true%29%3B%0A%20%20%20%20%20%20xhr.responseType%20%3D%20%22document%22%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20xhr.onload%20%3D%20xhr.onerror%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20xhr.responseXML%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20doc%20%21%3D%3D%20null%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20links%20%3D%20doc.getElementsByTagName%28%22link%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...links%5D.forEach%28function%28link%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20/%28%3F%3A%5E%7C%5Cs%29icon%28%3F%3A%5Cs%7C%24%29/.test%28link.rel.toLowerCase%28%29%29%20%29%20faviconURI%20%3D%20link.href%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%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%0A%20%20%20%20%20%20%20%20%20setBookFavicon%28%20faviconURI%2C%20siteURI%20%29%3B%20%20//%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20%20%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20xhr.send%28%29%3B%0A%20%20%20%7D%3B%20%20%20%0A%20%20%20%20%20%0A%7D%29%28%29%3B%0A%0A%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%20%u0432%20%u043C%u0435%u043D%u044E%20%u043F%u0430%u043F%u043E%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%2C%20%u043E%u0442%2016.05.2016.%20.....................%0A%28function%28%29%20%7B%0A%20%20%20var%20menuitem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20menuitem.setAttribute%28%22id%22%2C%20%22placesContext_restoreIcons%22%29%3B%0A%20%20%20menuitem.setAttribute%28%22label%22%2C%20%22%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%u0441%u0435%u0445%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%22%29%3B%0A%20%20%20menuitem.setAttribute%28%22selection%22%2C%20%22folder%22%29%3B%0A%20%20%20menuitem.setAttribute%28%22closemenu%22%2C%20%22single%22%29%3B%20%20%20%0A%20%20%0A%20%20%20menuitem.setAttribute%28%22oncommand%22%2C%20%22this.run%28document%29%22%29%3B%20%0A%20%20%20menuitem.run%20%3D%20function%28doc%29%20%7B%0A%20%20%20%20%20%20var%20node%20%3D%20PlacesUIUtils.getViewForNode%28doc.popupNode%29.selectedNode%3B%0A%20%20%20%20%20%20var%20folderId%20%3D%20node.folderItemId%20%3F%20node.folderItemId%20%3A%20node.itemId%3B%0A%20%20%20%20%20%20var%20contents%20%3D%20PlacesUtils.getFolderContents%28folderId%2C%20false%2C%20false%29.root%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20http%28s%29%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20%20%20%20for%20%28%20i%20%3D%200%3B%20i%20%3C%20contents.childCount%3B%20++i%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20item%20%3D%20node.getChild%28i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20item.uri.startsWith%28%22http%22%29%20%26%26%20getSiteFavicon%28item.uri%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%0A%20%20%20%7D%3B%0A%0A%20%20%20//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%20%u0441%20%u043E%u0434%u0438%u043D%u0430%u043A%u043E%u0432%u044B%u043C%u0438%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20....%20%20%0A%20%20%20function%20setBookFavicon%28faviconURI%2C%20siteURI%29%20%7BLOG%28siteURI%20+%20%22%5Cn%22%20+faviconURI%29%3B%0A%20%20%20%20%20%20var%20iconURI%20%3D%20Services.io.newURI%28faviconURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20var%20bookmarkURI%20%3D%20Services.io.newURI%28siteURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20faviconService%20%3D%20Cc%5B%22@mozilla.org/browser/favicon-service%3B1%22%5D.getService%28Ci.mozIAsyncFavicons%29%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20faviconService.setAndFetchFaviconForPage%28%0A%20%20%20%20%20%20%20%20%20bookmarkURI%2C%0A%20%20%20%20%20%20%20%20%20iconURI%2C%0A%20%20%20%20%20%20%20%20%20false%2C%0A%20%20%20%20%20%20%20%20%20faviconService.FAVICON_LOAD_NON_PRIVATE%0A%20%20%20%20%20%20%29%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20....%20%0A%20%20%20function%20getSiteFavicon%28siteURI%29%20%7B%0A%20%20%20%20%20%20var%20hostURI%20%3D%20%22http%3A//%22%20+%20siteURI.split%28/%5C/+/g%29%5B1%5D%20+%20%22/%22%3B%0A%20%20%20%20%20%20var%20faviconURI%20%3D%20hostURI%20+%20%22favicon.ico%22%3B%20%20//%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0441%u0430%u0439%u0442%u0430%0A%0A%20%20%20%20%20%20if%20%28%20getSiteFavicon%5BsiteURI%5D%20%29%20return%3B%20%20%20%20%20//%20%u0441%u0442%u043E%u043F%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%20%u0441%20%u0442%u0430%u043A%u0438%u043C%20%u0430%u0434%u0440%u0435%u0441%u043E%u043C%20%u0443%u0436%u0435%20%u0431%u044B%u043B%u0430%0A%20%20%20%20%20%20getSiteFavicon%5BsiteURI%5D%20%3D%20true%3B%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0434%u043E%u043A%u0443%u043C%u0435%u043D%u0442%u0430%20%u0441%u0430%u0439%u0442%u0430%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20%20%20%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20%20%20%20xhr.open%28%22GET%22%2C%20siteURI%2C%20true%29%3B%0A%20%20%20%20%20%20xhr.responseType%20%3D%20%22document%22%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20xhr.onload%20%3D%20xhr.onerror%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20xhr.responseXML%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20doc%20%21%3D%3D%20null%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20links%20%3D%20doc.getElementsByTagName%28%22link%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B...links%5D.forEach%28function%28link%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20/%28%3F%3A%5E%7C%5Cs%29icon%28%3F%3A%5Cs%7C%24%29/.test%28link.rel.toLowerCase%28%29%29%20%29%20faviconURI%20%3D%20link.href%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%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%0A%20%20%20%20%20%20%20%20%20setBookFavicon%28faviconURI%2C%20siteURI%29%3B%20%20//%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20%20%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20xhr.send%28%29%3B%0A%20%20%20%7D%3B%0A%20%20%20%0A%20%20%20//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u043D%u043E%u0432%u044B%u0439%20%u043F%u0443%u043D%u043A%u0442%20%u0432%u043E%20%u0432%u0441%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0430%u043F%u043E%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%20....%0A%20%20%20function%20handlePopup%28e%29%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20var%20node%20%3D%20e.target%3B%0A%20%20%20%20%20%20if%20%28%20node.id%20%21%3D%3D%20%27placesContext%27%20%29%20return%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20sortByName%20%3D%20node.getElementsByAttribute%28%22id%22%2C%20%22placesContext_sortBy%3Aname%22%29%5B0%5D%3B%20%20%20%20%0A%20%20%20%20%20%20setTimeout%28%28%29%3D%3E%20%7B%20menuitem.setAttribute%28%22disabled%22%2C%20sortByName.disabled%29%20%7D%2C%2050%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%20%28%20node.getElementsByAttribute%28%22id%22%2C%20%22placesContext_deleteDuplicates%22%29%5B0%5D%20%29%20return%3B%20%20%20%0A%20%20%20%20%20%20node.insertBefore%28menuitem%2C%20sortByName%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%3B%20%20%20%20%20%0A%20%20%20addEventListener%28%22popupshowing%22%2C%20handlePopup%2C%20true%2C%20window%29%3B%0A%20%20%20addDestructor%28%28%29%3D%3E%20menuitem.parentNode%20%26%26%20menuitem.parentNode.removeChild%28menuitem%29%20%29%3B%0A%0A%7D%29%28%29%3B%0A%0A%0A%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, спасибо!

Подскажите пожалуйста. Добавляю код из первого сообщения в кнопку в браузере Pale Moon, но пункт в меню не появляется.

nsv пишет

Добавляю код из первого сообщения в кнопку в браузере Pale Moon, но пункт в меню не появляется.

Я проверил на последней версии Pale Moon и у меня пункт в меню появляется:
327e07fc2bd1f920de9a0d8e0b99ad6d.png

Ты что делаешь не правильно, может код не туда положил, надо в положить в вкладку инициализации.

Положил в вкладку инициализации, только у меня тема другая и меню в верхнем углу,а версия портабельная 26.4.0 (Atom/WinXP)

nsv пишет

Положил в вкладку инициализации, только у меня тема другая и меню в верхнем углу,а версия портабельная 26.4.0 (Atom/WinXP)

Не понятно в чём тут проблема, может этот вариант подойдёт 08-08-2016 20:21:23

Должен заметить, что для All-in-One Sidebar из всех работает только эта 30-06-2016 и класть ее надо в URL, и потом сразу заменить иконку.

блин поставил щас 49 версию и меню и кнопка перестали работать.. иконки не восстанавливает 45 и 38 работают..

Исправил Восстановить иконки всех закладок для совместимости с Firefox 49.

bunda1
Спасибо. Полезный костыль для синхронизации.

bunda1 пишет

Исправил Восстановить иконки всех закладок для совместимости с Firefox 49.

теперь в pale moon-e перестало работать :)

Quartz1t пишет
bunda1 пишет

Исправил Восстановить иконки всех закладок для совместимости с Firefox 49.

теперь в pale moon-e перестало работать :)

Восстановить иконки всех закладок

bunda1 пишет
Quartz1t пишет
bunda1 пишет

Исправил Восстановить иконки всех закладок для совместимости с Firefox 49.

теперь в pale moon-e перестало работать :)

Восстановить иконки всех закладок

Нет, не работает. Последняя рабочая на РМ от 02.08.2014.

Quartz1t пишет

Последняя рабочая на РМ от 02.08.2014.

Ну тогда не знаю. У меня работает на Pale Moon 26.5.

bunda1 пишет

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

тоже полезно знать. спасибо.

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

bunda1 пишет
Stakhovsky пишет

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

:/

Выделить код

Код:

// Добавить новый пункт "Восстановить иконки закладок" в меню папок закладок, от 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) );

})();


К сожалению кнопка для добавления в каждую папку не работает, а общая кнопка не может переварить мои 10 тыщ закладок

JayK пишет

К сожалению кнопка для добавления в каждую папку не работает

Код добавляет в контекстное меню папок закладок пункт Восстановить иконки всех закладо а не кнопку:
fe975253280548d9d3a738d13a0aa095.png

или ты про что пишешь?

bunda1

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

В менб пункт есть, но у меня слишком много закладок, не обновляет, в вот вышеописанная фича не работает(

Использую старую версию скрипта от 02.08.2014....
Большая просьба поправить код чтобы подгружались иконки во всех папках закладок.
Прошу поправить именно эту версию кода, так как все остальные по какой-то причине у меня на РМ не работают.

Использую старую версию скрипта от 02.08.2014....
Большая просьба поправить код чтобы подгружались иконки во всех папках закладок.
Прошу поправить именно эту версию кода, так как все остальные по какой-то причине у меня на РМ не работают.

Попробовал код от 02.08.2014. на Рale Мoon 27 и вроде все иконки подгружаются без проблем. А как у тебя проявляется проблема с подгрузкой иконок во всех папках закладок?

bunda1 пишет

А как у тебя проявляется проблема с подгрузкой иконок во всех папках закладок?

Подгрузка иконок работает только по клику на папке и подгружается только в выбранной папке.
При клике не на папке подгрузка иконок не идёт. Также подгрузка не идёт если в выбранной папке есть ещё папка.
Иконки отдельных закладок, не в папках, не грузятся вовсе.

Подскажите пожалуйста, на FF 52 работает обновление favicon на закладках?

P.S: Почему разработчики браузера не сделают эту опцию по умолчанию :/

Не работает :(
bunda1, пожалуйста, обновите код для FF 52.
Есть много закладок, которые добавлены с http, но на настоящий момент некоторые из сайтов перешли на https ‒ хотелось бы, чтобы это учитывалось при обновлении иконки для закладки.

Без иконок сложно ориентироваться :(

Может вообще стоит какую-то тему для кнопок работающих на FF52 и выше завести?

Резидент пишет

Не работает :(
bunda1, пожалуйста, обновите код для FF 52.
Есть много закладок, которые добавлены с http, но на настоящий момент некоторые из сайтов перешли на https ‒ хотелось бы, чтобы это учитывалось при обновлении иконки для закладки.

Я проверил на FF 52 и всё работает. Может это поможет:
На Firefox51 и выше последняя версия Custom Buttons :: Add-ons for Firefox не работает, но можно сделать это Как отключить проверку цифровых подписей в дополнениях Firefox и установить исправлений custombuttons@xsms.org.xpi / Облако Mail.Ru
Или можно удалить или отключить установленый Custom Buttons и установить от сюда подписаную версию Custom Buttons: Custom Buttons • View topic - [Signed fixed extension attached] CB broken on Firefox 48+

09-03-2017 22:29:37

Mishania пишет

Может вообще стоит какую-то тему для кнопок работающих на FF52 и выше завести?

Может и стоит, но некому этим заниматься.

bunda1 пишет

Или можно удалить или отключить установленый Custom Buttons и установить от сюда

"custom_buttons-0.0.5.8.9-fixed3-signed"? Его и устанавливал, создал кнопку, поместил код из первого поста в инициализацию. В меню появился пункт "Восстановить иконки всех закладок", но при использовании функции иконки не появляются :( Перехожу в ручную по закладе - икона загружается :/
P.S: При переходе в ручную по закладкам, которые были добавлены в http, но теперь работают на https, то иконки не загружаются.

Резидент
Удали кнопку, создай новую пустую кнопку + https://forum.mozilla-russia.org/viewto … 75#p658275

Пересоздал, теперь в меню нет этого пункта :(

bunda1, сделайте пожалуйста видео установки с нуля. Вроде всё просто, но какой-то необъяснимый геморрой :(

Разработчики Мозиллы, что ж вы такие редиски и не сделаете эту функцию штатно? Приходится извращаться костылями и то пока не работает метод :(
Ладно хоть огромная благодарность bunda1 за такое решение, а так его вообще нет. Переустановил браузер, восстановил из синхронизации и сиди в носу ковыряй разгадывая загадку как же теперь восстановить иконки у всех многочисленных закладок :sick:

Резидент пишет

bunda1, сделайте пожалуйста видео установки с нуля. Вроде всё просто, но какой-то необъяснимый геморрой :(

ПКМ на любой панели и в открывшемся меню нажимаем пункт Добавить новую кнопку, откроется окно редактирования новой кнопки и копируем мой код в вкладку Инициализация. Потом в окне редактирования кнопки нажимаем Ok, открываем настройку панелей инструментов (Customize) и вытаскиваем новую кнопку на нужную панель.

На последнем ERS так и не заработала. В 45.8.0 работает. Пробовал и новую кнопку создавать и две версии аддона. Сейчас стоит Custom Buttons 0.0.5.8.9.3

Mishania пишет

На последнем ERS так и не заработала. В 45.8.0 работает. Пробовал и новую кнопку создавать и две версии аддона. Сейчас стоит Custom Buttons 0.0.5.8.9.3

Я проверил Восстановить иконки всех закладок на двух сборках FF52 и всё работает даже с включеным e10. Даже не знаю в чём проблема.

bunda1
Я может не полностью код копировал, но переделал кнопку и всё заработало. Очередное спасибо за вашу помощь.

скрытый текст
Вижу у вас UA 24 фаерфокс, есть какая-то причина? Мне что-то очень не нравится развитие браузера, хочется сделать большой даунгрейд, склоняюсь в пользу Firefox PCX v33.1.1, долго на ней сидел и очень нравилось.

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

на 53 мозиле кажется кнопка не работает..и даже похоже вызывает не рабочее состояние браузера.. перестают открыватся ссылки обновлятся страници..
можно ли исправить или может какой аналог есть по обновлению иконок?
могу консоль браузера выложить если поможет..

mahtanoronra пишет

на 53 мозиле кажется кнопка не работает..и даже похоже вызывает не рабочее состояние браузера.. перестают открыватся ссылки обновлятся страници..

Не знаю в чём тут дело. Мне код работает на Firefox 53 без проблем.

bunda1
блин...спасибо...тогда буду копать.. заодно по позже выложу то что пишет в консоле...
сам браузер не виснет ни чего...но перестаёт работать..
юзаю CB fix4

UP
что то очень медленно обновляет каждую иконку...секунд 30 наверно

скрытый текст
jMlBmyn.png

это норм?
блин целый день сидел...ждал пока в консоле все отработает..пришлось закрыть...пк надо выключать..в чём проблема то((

так.... уже не раз сталкиваюсь с проблемой подобной...
помогает такое
user_pref("dom.max_chrome_script_run_time", 600);
так что если у кого не обновляет иконки измените это значение по выше.
с расширением FEBE тоже помогало когда оно подвисало.
после изминения вижу что в консоле идёт обновление иконок

mahtanoronra пишет

это норм?
блин целый день сидел...ждал пока в консоле все отработает..пришлось закрыть...пк надо выключать..в чём проблема то((

Нет, это не нормально. Такое может быть только если интернет медленный или комп совсем слабый или другая программа жрёт все ресурсы. У меня довольно шустро обновляется, примерно за пару минут.

bunda1 пишет
mahtanoronra пишет

это норм?
блин целый день сидел...ждал пока в консоле все отработает..пришлось закрыть...пк надо выключать..в чём проблема то((

Нет, это не нормально. Такое может быть только если интернет медленный или комп совсем слабый или другая программа жрёт все ресурсы. У меня довольно шустро обновляется, примерно за пару минут.

инет норм.100 мб, ресы вроде ни кто не кушает тоже хватает...
опять же у меня много в избранном элементов..где то 1500 наверно,может в этом дело?

скрытый текст
wwskLHv.png

сейчас опять жду довольно долго.. лог длинный. e10 выключен
качал CB fix4 подписаный.ладно надеюсь разберусь... создам новый профель

UP
вообщем ушёл из дома на час..вернулся

скрытый текст
vsC7gBQ.png

в консоле вижу тока эту строчку постоянно..иконки не обновились.
до этого на ТЕСТВОМ профеле удалил 2 папки из избранново.. там где то вкладок 1000(без удаления тоже не работало), осталось 700 элементов - минут за 5 обновил,всё ок.
видим на чём то подвисает...
может есть способ вычислить проблему?может что бы кнопка ошибку показывала где то, при проблеме?

UP2
не удалось починить..пришлось 48 мозилу поставить, обновить через FavIcon Reloader  а уже потом 53

Всем доброго времени суток.
Может я чего не понял, но добиться появления пункта Восстановить иконки всех закладок в меню "Закладки"
мне так и не удалось. Мозилла 54, может кто что подскажет?

скрытый текст
0_196463_150a9192_XL.png


0_196464_d954f721_XL.png

0_196465_6d415949_XL.png

NikolayHAOS
Меню ПКМ на любой папке закладок. Работает на ESR в боковой панели и меню закладок (в окне не работает), выше не смотрел.

скрытый текст
// Добавить новый пункт "Восстановить иконки закладок" в меню папок закладок, от 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) );

})();

_zt
Спасибо как нибудь обязательно попробую.
О результате отпишусь.

bunda1 пишет

Добавить новый пункт "Восстановить иконки всех закладок" в меню "Закладки"( Firefox 24 + )
Автор: bunda1
Версия: от 04.10.2016.
Описание: Kод добавляет в меню "Закладки" на панели меню новый пункт Восстановить иконки всех закладок который восстанавливает иконки всех закладок у которых нет иконок. Код полезен в случаях если закладок очень много а иконки пропали и вручную их восстанавливать долго.
Использование: положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.

Выделить код

Код:

// Добавить новый пункт "Восстановить иконки всех закладок" в меню "Закладки", от 04.10.2016. ..............
(()=> {
   // Создать новый пункт в меню "Закладки" ....
   var menuitem = document.createElement("menuitem");
   var sep = document.getElementById("organizeBookmarksSeparator");
   sep.parentNode.insertBefore(menuitem, sep);   
   menuitem.setAttribute("label", "Восстановить иконки всех закладок");
   menuitem.onclick =e=> chooseBookmarks();    
   addDestructor(()=> menuitem.remove());


   // Перебрать все http(s) закладки ....
   function chooseBookmarks(id = 1) {
      var folder = PlacesUtils.getFolderContents(id).root;
   
      folder.QueryInterface(Ci.nsINavHistoryContainerResultNode);
      folder.containerOpen = true;

      for ( var i = 0; i < folder.childCount; i++ ) {
            var child = folder.getChild(i);
   
            PlacesUtils.nodeIsFolder(child)
            ? chooseBookmarks(child.itemId)
            : child.uri.startsWith("http") && child.icon == '' && getSiteFavicon(child.uri);
            }
                       
      folder.containerOpen = false;
   };


   // Добавить иконки к закладкам с одинаковыми адресами ....  
   function setBookFavicon(siteURI, faviconURI) {
      var iconURI = Services.io.newURI( faviconURI, null, null);
      var bookmarkURI = Services.io.newURI( siteURI, null, null );
           
      PlacesUtils.favicons.setAndFetchFaviconForPage(
         bookmarkURI,
         iconURI,
         false,
         this.FAVICON_LOAD_NON_PRIVATE,
         null,
         Services.scriptSecurityManager.getSystemPrincipal()
      )
   };
   
   
   // Получить адрес иконки закладки и запустить установку иконки .... 
   function getSiteFavicon(siteURI) {
      var hostURI = "http://" + siteURI.split(/\/+/g)[1] + "/";
      var faviconURI = hostURI + "favicon.ico";  // адрес иконки, если не получить адрес иконки из сайта
      
      // получить адрес иконки из документа сайта закладки
      var xhr = new XMLHttpRequest();
      xhr.open("GET", siteURI, true);
      xhr.responseType = "document";      
      xhr.onload = xhr.onerror =()=> {
         var doc = xhr.responseXML;
         if ( doc !== null ) {
              var links = doc.getElementsByTagName("link");
              [...links].forEach(link=> {
                 if ( /(?:^|\s)icon(?:\s|$)/.test(link.rel.toLowerCase()) ) faviconURI = link.href });
              }
                         
         setBookFavicon(siteURI, faviconURI);  // запустить установку иконки   
      }
      xhr.send();
   };   
     
})();

Восстановить иконки всех закладок( Firefox 24 + )
Автор: bunda1
Версия: от 04.10.2016.
Описание: Kнопка восстанавливает иконки всех закладок у которых нет иконок. Код полезен в случаях если закладок очень много а иконки пропали и вручную их восстанавливать долго.

Выделить код

Код:

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%3E%u0412%u043E%u0441%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0432%u0441%u0435%u0445%20%u0437%u0430%u043A%u043B%u0430%u0434%u043E%u043A%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis._handleClick%20%3D%28%29%3D%3E%20chooseBookmarks%28%29%3B%0A%0A//%20%u041F%u0435%u0440%u0435%u0431%u0440%u0430%u0442%u044C%20%u0432%u0441%u0435%20http%28s%29%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20....%0Afunction%20chooseBookmarks%28id%20%3D%201%29%20%7B%0A%20%20%20var%20folder%20%3D%20PlacesUtils.getFolderContents%28id%29.root%3B%0A%20%20%20%0A%20%20%20folder.QueryInterface%28Ci.nsINavHistoryContainerResultNode%29%3B%0A%20%20%20folder.containerOpen%20%3D%20true%3B%0A%0A%20%20%20for%20%28%20var%20i%20%3D%200%3B%20i%20%3C%20folder.childCount%3B%20i++%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20child%20%3D%20folder.getChild%28i%29%3B%0A%20%20%20%0A%20%20%20%20%20%20%20%20%20PlacesUtils.nodeIsFolder%28child%29%0A%20%20%20%20%20%20%20%20%20%3F%20chooseBookmarks%28child.itemId%29%0A%20%20%20%20%20%20%20%20%20%3A%20child.uri.startsWith%28%22http%22%29%20%26%26%20child.icon%20%3D%3D%20%27%27%20%26%26%20getSiteFavicon%28child.uri%29%3B%0A%20%20%20%20%20%20%20%20%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%0A%20%20%20folder.containerOpen%20%3D%20false%3B%0A%7D%3B%0A%0A//%20%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u043A%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%20%u0441%20%u043E%u0434%u0438%u043D%u0430%u043A%u043E%u0432%u044B%u043C%u0438%20%u0430%u0434%u0440%u0435%u0441%u0430%u043C%u0438%20....%20%20%0Afunction%20setBookFavicon%28siteURI%2C%20faviconURI%29%20%7B%0A%20%20%20var%20iconURI%20%3D%20Services.io.newURI%28faviconURI%2C%20null%2C%20null%29%3B%0A%20%20%20var%20bookmarkURI%20%3D%20Services.io.newURI%28siteURI%2C%20null%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20PlacesUtils.favicons.setAndFetchFaviconForPage%28%0A%20%20%20%20%20%20bookmarkURI%2C%0A%20%20%20%20%20%20iconURI%2C%0A%20%20%20%20%20%20false%2C%0A%20%20%20%20%20%20this.FAVICON_LOAD_NON_PRIVATE%2C%0A%20%20%20%20%20%20null%2C%0A%20%20%20%20%20%20Services.scriptSecurityManager.getSystemPrincipal%28%29%0A%20%20%20%29%0A%7D%3B%0A%20%20%20%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%20%u0438%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20....%20%0Afunction%20getSiteFavicon%28siteURI%29%20%7B%0A%20%20%20var%20hostURI%20%3D%20%22http%3A//%22%20+%20siteURI.split%28/%5C/+/g%29%5B1%5D%20+%20%22/%22%3B%0A%20%20%20var%20faviconURI%20%3D%20hostURI%20+%20%22favicon.ico%22%3B%20%20//%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0441%u0430%u0439%u0442%u0430%0A%20%20%20%20%20%20%0A%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%20%u0438%u043A%u043E%u043D%u043A%u0438%20%u0438%u0437%20%u0434%u043E%u043A%u0443%u043C%u0435%u043D%u0442%u0430%20%u0441%u0430%u0439%u0442%u0430%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0438%0A%20%20%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20xhr.open%28%22GET%22%2C%20siteURI%2C%20true%29%3B%0A%20%20%20xhr.responseType%20%3D%20%22document%22%3B%20%20%20%20%20%20%0A%20%20%20xhr.onload%20%3D%20xhr.onerror%20%3D%28%29%3D%3E%20%7B%0A%20%20%20%20%20%20var%20doc%20%3D%20xhr.responseXML%3B%0A%20%20%20%20%20%20if%20%28%20doc%20%21%3D%3D%20null%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20var%20links%20%3D%20doc.getElementsByTagName%28%22link%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%5B...links%5D.forEach%28link%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20/%28%3F%3A%5E%7C%5Cs%29icon%28%3F%3A%5Cs%7C%24%29/.test%28link.rel.toLowerCase%28%29%29%20%29%20faviconURI%20%3D%20link.href%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%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%0A%20%20%20%20%20%20setBookFavicon%28siteURI%2C%20faviconURI%29%3B%20%20//%20%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0443%20%u0438%u043A%u043E%u043D%u043A%u0438%20%20%20%0A%20%20%20%7D%0A%20%20%20xhr.send%28%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%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

на   52.9.0 (64-бит)   неработает  , или я что то не то делаю ?

инициализая ,  нажимаю на кнопку  и ничего непроисходит

:(      Или это надо ждать  ?

12-07-2018 02:11:30
FavIcon Reloader   тоже неработает , в окне пусто
:(

Я конечно не люблю лезть куда не следует, но кто нибудь сможет обновить работоспособность кнопки. под современные обновы браузера, есесно. кастомная кнопка версии 0.0.7.0.0.32
ООООчень не хочется перебирать после переустановки браузера сотни 4-6 вкладок(
:rolleyes: https://addons.mozilla.org/ru/firefox/a … src=search походу придётся пользоваться данным(