У меня есть букмарклет, который запускает функцию window.open javascript, чтобы открыть небольшое окно с моим букмарклетом - внешнюю функцию, используемую для связи между любым сайтом и моим сервером. Я бы хотел, чтобы favicon отображался, когда букмарклет добавлен на панель закладок. Я понимаю, что букмарклет - это javascript, нет привязанного к нему домена, поэтому это будет сложно или невозможно достичь этой цели.
Мое понимание проблемы:
Favicons легко понять, это ссылка в заголовке HTML-документа. Браузер может вытащить это при закладке фактического сайта по ссылке. Однако, как вы видите, мой букмарклет сработал с кодом запуска javascript, где не существует HTML, поэтому нет ссылки на favicon. Я еще не готов сдаться, но я чувствую, что есть какая-то инъекция, которую можно сделать...
На данный момент код запуска букмарклета выглядит следующим образом:
Текущий Script - букмарклет, no favicon (обратите внимание, что весь код формируется с разрывами строк - не будет работать во всех браузерах, обычно в одной строке)
javascript:void(window.open(
'http://mydomain.com/bookmarklet/form?u='
+encodeURIComponent(location.href)+
't='+encodeURIComponent(document.title),
'test','status=0,toolbar=0,location=0,menubar=0,
resizable=false,scrollbars=false,height=379,width=379'
));
Ближайшая вещь, которую я нашел для решения, выглядит следующим образом, но она не открывает новое окно - просто создает новую вкладку с html в качестве страницы:
Рабочий значок, без окна букмарклета
javascript:'<!DOCTYPE html>
<html><head>
<title>Hello World</title>
<link rel="icon" type="image/png" href="#" onclick="location.href='http://www.tapper-ware.net/devel/js/JS.Bookmarklets/icons/next.png'; return false;" />
</head>
<body>Hello World</body>
</html>';
Я попробовал комбинацию из двух, но, похоже, не использовал значок. Мне было бы интересно узнать, может ли кто-нибудь увидеть способ обхода. Я думаю, что это возможно, я просто не думаю, что он настроен правильно, как я пытался.
Мой гибрид двух - букмарклет, но не favicon
javascript:'<!DOCTYPE html>
<html><head>
<title>Hello World</title>
<link rel="icon" type="image/png" href="#" onclick="location.href='http://www.tapper-ware.net/devel/js/JS.Bookmarklets/icons/next.png'; return false;" />
</head><body>Hello World</body></html>';
window.open('http://mydomain.com/bookmarklet/form?u='
+encodeURIComponent(location.href)+
'&t='+encodeURIComponent(document.title),
'test',
'status=0,toolbar=0,location=0,menubar=0,resizable=false,
scrollbars=false,height=379,width=379').void(0);
Что я сделал, так это использование структуры html перед запуском window.open(), это успешно открыло мой букмарклет в новом окне, но значок значка не появился для значка закладки.
Логическое решение:
Мои мысли по этому поводу состоят в том, чтобы указать букмарклет на страницу, которая представляет собой просто файл HTML со ссылкой favicon и запуск Script в <head>
. Тем не менее, я не хочу этого открытия на новой вкладке с пустым файлом HTML, который затем запускает всплывающее окно.. Обходное решение..?
Существует аналогичный вопрос, но я, похоже, не нашел ответ, который я ищу:
Как установить значки/значки при перемещении букмарклета на панель инструментов?
Источник для работы favicon javascript (без букмарклета):
http://www.tapper-ware.net/blog/?p=97
Мне было бы интересно, какие ваши текущие знания/мысли об этом будут