>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Поддержка пользователей http://forum.mozilla-russia.org/viewforum.php?id=26 >[MenuWizard] Загрузить/Восстановить значки сайтов в закладках http://forum.mozilla-russia.org/viewtopic.php?id=69294 |
pag77 > 08-02-2016 14:05:54 |
Это готовое решение для аддона "Menu Wizard" https://addons.mozilla.org/addon/s3menu-wizard/ Время от времени в закладках пропадают иконки для сайтов, например после синхронизации закладок через Firefox-синхронизация Установка:
Откройте настройки Menu Wizard: "Инструменты > Menu Wizard", "Дополнения > Menu Wizard > Настройки" или введите в строку адреса about:config-menu Раскройте меню "Панель меню" Откройте свойства у "Закладки" В поле "Команда > onPopupShowing" вставьте этот код: Выделить код Код:this.check_icons = function(event) { var menu_popup = event.target; var menu_items = menu_popup.childNodes; for (var i=0; i<menu_items.length; i++) { var menu = menu_items[i]; if ((menu.localName == 'menuitem') && (menu._placesNode)) { var place = menu._placesNode; if ((place.icon == '') && (/^https?\:\/\//.test(place.uri))) { this.get_icon_html(place.uri); } } } } this.get_icon = function(page_url) { var favicon_url = /^https?\:\/\/[^\/]+/i.exec(page_url); if (! favicon_url) { return; } favicon_url = favicon_url[0] + '/favicon.ico'; var req = new XMLHttpRequest(); var self = this; req.onreadystatechange = function () { if (req.readyState == 4) { if (req.status == 200) { self.set_icon(page_url, favicon_url); } } }; req.open("GET", favicon_url, true); req.send(null); } this.get_icon_html = function(page_url) { var req = new XMLHttpRequest(); var self = this; req.onreadystatechange = function () { if (req.readyState == 4) { if (req.status == 200) { var favicon_url = self.icon_parse_html(page_url, req.responseText); if (favicon_url) { self.set_icon(page_url, favicon_url); } else { self.get_icon(page_url); } } else { self.get_icon(page_url); } } }; req.open("GET", page_url, true); req.send(null); } this.icon_parse_html = function(page_url, responseText) { responseText = responseText.replace(/<\!\-\-.*?\-\->/g, ''); var RegEx_head = /<head.*>[\s\S]+<\/head>/i; var RegEx_base = /<base\s*href\s*=\s*"(.*)"\s*>/i; var RegEx_link = /<link[\s\S]+?>/gi; var RegEx_rel_sicon = /rel[\s]*?=[\s]*?["\'][\s]*?(?:shortcut)[\s]*?icon[\s]*?["\']/i; var RegEx_rel_icon = /rel[\s]*?=[\s]*?["\'][\s]*?icon[\s]*?["\']/i; var RegEx_href = /href[\s]*?=[\s]*?["\'](.+?)[\s]*?["\']/i; var head = RegEx_head.exec(responseText); var base = RegEx_base.exec(head); var link = ''; var href = ''; var nsIIOService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); var PageURI = nsIIOService.newURI(page_url, null, null); var resolvedPageURI = PageURI; var FavIconURL = ""; if (base !== null) { resolvedPageURI = nsIIOService.newURI(PageURI.resolve(base[1]), null, null); } while ((link = RegEx_link.exec(head)) !== null) { if (RegEx_rel_sicon.test(link) === true) { href = RegEx_href.exec(link); if (href !== null) { FavIconURL = href[1]; break; } } RegEx_link.lastIndex; } RegEx_link.lastIndex = 0; if (FavIconURL === "") { while ((link = RegEx_link.exec(head)) !== null) { if (RegEx_rel_icon.test(link) === true) { href = RegEx_href.exec(link); if (href !== null) { FavIconURL = href[1]; break; } } RegEx_link.lastIndex; } } RegEx_link.lastIndex = 0; if (FavIconURL) { FavIconURL = resolvedPageURI.resolve(FavIconURL); } return FavIconURL; } this.set_icon = function(page_url, favicon_url) { var faviconService = Components.classes["@mozilla.org/browser/favicon-service;1"].getService(Components.interfaces.nsIFaviconService); var nsIIOService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); faviconService.setAndFetchFaviconForPage(nsIIOService.newURI(page_url, null, null), nsIIOService.newURI(favicon_url, null, null), false, faviconService.FAVICON_LOAD_NON_PRIVATE); } this.setAttribute("onpopupshown", "this.check_icons(event)"); PS: |
Sergeys > 09-02-2016 00:56:19 |
Достаточно одной темы |
stvol > 19-10-2016 18:21:00 |
pag77 пишет
Что-то не восстанавливает! Или надо каждую вкладку отдельно открывать, тогда какой смысл? |
pag77 > 19-10-2016 21:19:23 |
stvol пишет
к сожалению в 49 firefox что-то намудрили - методы существуют, но не работают. |