Yurkesch
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору // Добавить новый пункт "Восстановить иконки всех закладок" в меню "Закладки", от 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(); }; })(); | Всего записей: 1130 | Зарегистр. 25-12-2004 | Отправлено: 23:20 25-07-2017 | Исправлено: Yurkesch, 23:23 25-07-2017 |
|