Добавить новый пункт "Восстановить иконки всех закладок" в меню "Закладки"( 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
Отредактировано bunda1 (02-08-2014 16:08:39)
Отсутствует
Добрый день, спасибо за ответ.
Поясните ещё пожалуйста как добавить / редактировать иконки действующих закладок?
нашёл ответ вот здесь https://forum.mozilla-russia.org/viewtopic.php?pid=659356#p659356
но с кодированием совершенно не знаком. У меня например банально нет этого файла userchrome.css
Отсутствует
Уважаемый 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();
Но наверно это не то что ты хотел узнать.
Отсутствует
Если Вы помните, в своё время я с Вашей помощью написал кнопку [CB] Показывать иконки сайтов, у которых их нет, в табах и адр. строке
Поступил запрос - добавить этот трюк и в восстановление иконок закладок. Чтобы "безликие", "унылые"сайты тоже приобрели нечто типа иконки.
Для этого мне надо ту функцию генерации иконок присобачить и к восстановлению иконок в закладках.
Я поиграюсь и расскажу что получилось.
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Поступил запрос - добавить этот трюк и в восстановление иконок закладок. Чтобы "безликие", "унылые"сайты тоже приобрели нечто типа иконки.
Ты хочешь добавить к закладкам без иконок сайта свои иконки, я правильно понял?
Отсутствует
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.uri.startsWith("chrome")) && child.icon == '' && getSiteFavicon( child.uri );
или
: (child.uri.startsWith("http") || child.uri.startsWith("about")) && child.icon == '' && getSiteFavicon( child.uri );
не помогла
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
Ну если так:
Отсутствует
Помогите пожалуйста если можно сделать такой же пункт (Восстановить иконки закладок) в контекстном меню папок и подпапок на панели закладок который будет обновлять иконки только в данной папке. Когда очень много закладок запускать процесс ради пары иконок очень ощутимо сказывается на работе браузера.
Отредактировано Stakhovsky (13-05-2016 19:19:36)
Отсутствует
Когда очень много закладок запускать процесс ради пары иконок очень ощутимо сказывается на работе браузера.
Иконки не должны сами пропадать, похоже у тебя какой то глюк.
Отсутствует
bunda1
Так они не пропадают, не всегда добавляется иконка когда добавляю закладку.
Добавлено 13-05-2016 22:07:05
Например я надобавлял закладок но на некоторых нет иконок, я нажимаю "Восстановить иконки всех закладок" и обновляются закладки у которых нет значка.
Но когда очень много закдалок они как то все анализируются что занимает много времени и ощутимо на работе браузера.
Если можно добавить пункт в контекстное меню папки закладок, что бы обновлялись закладки только в одной нужной папке.
Отредактировано Stakhovsky (13-05-2016 22:10:47)
Отсутствует
Если можно добавить пункт в контекстное меню папки закладок, что бы обновлялись закладки только в одной нужной папке.
// Добавить новый пункт "Восстановить иконки закладок" в меню папок закладок, от 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, Спасибо Вам за труд, это то, что надо!! Только есть небольшой нюансик, если этот код вставить в кнопку ниже кода: «Добавить новый пункт "Удалить дубликаты закладок" в меню папок закладок» (если он присутствует в кнопке), то тогда код "Восстановить иконки закладок" в меню папок закладок» не работает и в меню папок закладок ничего не появляется.
P.S.
Можно добавить в оисание кнопки, чтобы в будущем не возникали вопросы - "почему не работает")
Отсутствует
если этот код вставить в кнопку ниже кода: «Добавить новый пункт "Удалить дубликаты закладок" в меню папок закладок» (если он присутствует в кнопке), то тогда код "Восстановить иконки закладок" в меню папок закладок» не работает и в меню папок закладок ничего не появляется.
Спасибо. Надо будет исправить.
Отсутствует
Ребята, всем спасибо, сделал кнопку.
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 (30-06-2016 15:04:04)
Отсутствует
citehala, а нельзя ли добавить в эту кнопку возможность восстановления всех иконок по левому клику на саму кнопку?
Хорошо, когда у человека есть выбор, но плохо, когда он перед ним стоит ©
Отсутствует
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
Отсутствует