Як встановити фавікон / піктограму при перетягуванні закладок на панель інструментів?


108

Я зробив собі закладку, і вона працює просто чудово, але коли її додають на панель інструментів в Opera чи Firefox, вона просто бере значок браузера за замовчуванням для браузера (глобус і зірка відповідно). На моєму веб-сайті є фавікон, а вікно, вкладка та навіть [сайт] закладка використовує вказаний я фавікон. Тільки не моя закладка.

Як я можу кодувати свій сайт або закладку, щоб закладка отримала і фавікон?

Мені відомо про різні методи ручного хакерства, які користувачі можуть використовувати для встановлення фавікону після факту, але це небажані рішення.


Приклад: перетягування закладки в Opera спричиняє закладку значка Diigo: diigo.com/tools/diigolet
Pistos

той, на який ви посилаєтесь, не робить цього для мене у Firefox.
benlumley

Так, не в IE. Але це робить це в Опері. :)
Пістос

Вибачте, я просто спробував Opear 9.6, і він не працює для мене в Opera.
Гасс

1
Там цю пропозицію для вирішення тут: wiki.whatwg.org/wiki/Link_Icons
Лапо

Відповіді:


23

Закладка використовує javascript://схему і тому не має домену, з якого може бути завантажений фавікон.

Отже, на даний момент у вас немає способу надати закладку для закладки. Подумайте про це так: пам’ятайте всю річ з пісочницею Javascript - де Javascript може не отримувати доступу до нічого, крім домену веб-сторінки, де вона працює? Добре, що закладка, яку потрібно прив’язати до будь-якого домену для поточної сторінки, яку ви переглядаєте, також не може бути прив’язана до фавікону на вашому власному веб-сайті.

Оновлення: Відповідно до відповіді Ганса Шмуккера, існує можливість створити закладку, що при завантаженні браузера в меню закладок генерує HTML-документ, який має фавікон. Міркування здається, що це може спрацювати, але я ще не бачив подібного в дії, і мої тести повернулися негативно.


17

Ось як це можна зробити:

  1. Перетягніть закладку на панель закладок.
  2. Поруч із ним створіть закладку сайту, який ви хочете використовувати для свого закладок.
  3. Відкрийте Менеджер закладок, натисніть Організувати спадне меню та виберіть Експорт, збережіть закладки як HTML-файл.
  4. Відкрийте файл HTML у текстовому редакторі.
  5. Знайдіть закладку, яку ви тільки що створили, скажімо, її закладку Gmail, у вас повинен бути HTML-код, який виглядає приблизно так:

<DT><A HREF="http://mail.google.com/mail/u/0/#inbox" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABV0lEQVQ4jdWQzUoCYRiFnxl/0plso0IKX7mqXWCLIlq0qEW4d19Qi6BLCELwEgpvQbyAVrroCrSNUJFGAyrkEEEMNs5PCxtRHGsZneX7nedwzgd/LQngObfnykIQOj9Disd/BFxdZ3hVwtE0Mje3kuw9OJqGWSji1BtzYafeGHk0jTdzCIA8aXANA/O6hFWuzMBWuYJ5XcI1DF6MAY8fxmxAYHdnZK7WMAtFXF3H1XXMQhGrWsN2XR5WM/QGn2MmOBkQOj5CFoJhuTKe5DUzbJvW1jbWZhbqd/4BAIGDfSQhGH7XBehLMlruEGlFzEyTZy6AvL5G+PICWQja6iJaPu8L+zbw9B4MYpyeEB4MkF7782z+AZ1OD0WNkk4vA7AUi/HUav8eYNsOnW6XZCJBJLIwvieTcVQ1SrN5j2XbUwFTf9DpdkmnUlOwJ0VRyGY3UBVl7px/qi+cdYQvZvKCUwAAAABJRU5ErkJggg==">Gmail</A>

  1. Скопіюйте весь тег ICON
  2. У цьому ж файлі знайдіть створений вами закладки та вставте тег ICON, який ви скопіювали, у тег закладок :

<DT><A HREF="javascript:(function(){... bookmarklet JS code...})();" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABV0lEQVQ4jdWQzUoCYRiFnxl/0plso0IKX7mqXWCLIlq0qEW4d19Qi6BLCELwEgpvQbyAVrroCrSNUJFGAyrkEEEMNs5PCxtRHGsZneX7nedwzgd/LQngObfnykIQOj9Disd/BFxdZ3hVwtE0Mje3kuw9OJqGWSji1BtzYafeGHk0jTdzCIA8aXANA/O6hFWuzMBWuYJ5XcI1DF6MAY8fxmxAYHdnZK7WMAtFXF3H1XXMQhGrWsN2XR5WM/QGn2MmOBkQOj5CFoJhuTKe5DUzbJvW1jbWZhbqd/4BAIGDfSQhGH7XBehLMlruEGlFzEyTZy6AvL5G+PICWQja6iJaPu8L+zbw9B4MYpyeEB4MkF7782z+AZ1OD0WNkk4vA7AUi/HUav8eYNsOnW6XZCJBJLIwvieTcVQ1SrN5j2XbUwFTf9DpdkmnUlOwJ0VRyGY3UBVl7px/qi+cdYQvZvKCUwAAAABJRU5ErkJggg==">MyBookmarklet</A>

  1. Збережіть цей файл
  2. Поверніться до менеджера закладок Chrom, натисніть знову Організувати та виберіть Імпорт
  3. Імпортуйте HTML-файл, який ви щойно відредагували, ваш закладка тепер має фавікон .

В основному процедура полягає в тому, щоб отримати атрибут ICON тега закладок і вставити його в тег закладок

введіть тут опис зображення


1
(Це дуже давнє запитання, але ...) Я шукав рішення, яке не потребувало жодних дій кінцевого користувача (крім додавання закладок на панель інструментів). тобто що може зробити власник сайту, щоб вказати значок.
Пістос

1
Для мене це найкраща відповідь. Це працює, і це пояснено всебічно. Велике спасибі.
tsuma534

13

Це не зовсім правильно: у закладок немає домену, але він має місце розташування (яке є самим закладкою), і ви можете призначити значок для цього. Після цього питання полягає в тому, як браузер зберігає піктограми (Firefox зберігає піктограму закладок назавжди, можливо, вам не пощастить з іншими браузерами).

PS Security навіть не грає в нього, піктограми можуть надходити з будь-якого місця. Обмежень немає.

Див. Http://www.tapper-ware.net/blog/?p=97


3
Хоча міркування звучать так, як це може спрацювати, приклади, приведені в блозі, з яким ви зв’язувались, або просто генерують документ із піктограмою, яку Firefox може або не може відображати для закладок, або насправді є закладками, які запускають Javascript на довільних сторінках - але не обидва (перевірені на Firefox 7). Я досі не переконаний у цій роботі.
Гасс

13

Прочитавши таппер [посуд] та сайт Рестафаріан, ось найпростіше рішення, яке я міг придумати:

<a href="javascript:

var title = window.location.href;

if (title.indexOf('http://yourwebsite/bookmarklet/') == 0) {
    '<head><link rel=\'shortcut icon\' href=\'favicon.ico\'></head>Bookmarklet';
} else {
    (function(){document.body.appendChild(document.createElement('script')).src='http://yourwebsite/bookmarklet.js';})();
}">Click Me!</a>

Відмінно працює в Chrome та FF, але FF4 - єдиний браузер, який збереже піктограму на панелі закладок. Ось як це виглядає: http://cl.ly/5WNR


Я намагаюся дізнатися більше про закладки, ви могли б трохи пояснити код новачкам? Спасибі
Ендрю Макензі

Звичайно. При натисканні на нього він перевіряє URL-адресу поточної сторінки. Якщо ви перебуваєте на сторінці, де розміщується ваш закладка, "розміщено" (рядок 4), він записує елемент посилання на сторінку, що вказує на потрібне зображення. Ваш браузер побачить це і завантажить фавікон. Браузер кешує це і використовує його значок на панелі закладок. Якщо ви перебуваєте на будь-якій іншій сторінці, вона просто зробить все, що вам належить зробити.
Брайан Макаллістер

5
Я цього не розумію. При перетягуванні букмарклета вашого улюбленого бару (як один робить з Смачними Bookmarklet тут ) , що працює цей код? Я не бачу, чому б клацнути закладку (і запустити код), поки вона не буде збережена на панелі обраних, тобто після того, як браузер розташується на її значку?
дамблід

6

Ось приємна техніка, яка майже робить те, що ви хочете.🙅

Відмінно працює на моєму Mac✅, але я не міг змусити його працювати на Windows 7⃣.❌

Використовуйте "Emoji" 🈳. Вони є символами Unicode, які також схожі на барвисті значки. Ви можете вибрати лише заздалегідь визначений список зображень, але насправді це непогано💩, якщо все, що ви намагаєтеся зробити, це дати користувачеві щось подивитися👓, щоб нагадати їм, що робить закладка.

Наприклад, я роблю закладку «ключ безпеки». Тому я використовую 🔑 у своєму імені закладок! 😃😊

Таким чином, ви бачите зображення🎑 на панелі закладок 😝

Використовуйте цей сайт, щоб допомогти вам знайти Emoji, який працює для вашої закладки: http://emojipedia.org/symbols/


1
Я просто отримую цілу купу знаків "шрифт не має гліфів для цієї кодової точки". Зважаючи на те, що я використовую Firefox в Linux, це означає, що резервна поведінка навіть не змогла їх знайти в жодному шрифті системи. Чи правильно я здогадуюсь, що це специфічні для Mac гліфи емоджи, які блогери закликали веб-дизайнерів уникати?
ssokolow

Так. Однак якщо ви знаєте, що ваш клієнт працює на комп’ютері, здатному відображати емоджи, чи так погано їх відображати? Для мого особистого використання я дозволю користувачам вирішити, хочуть вони виводити смайли чи ні. Якщо ні, я не видаю жодного, вони отримують лише звичайний текст.
Тео

Окрім того, що це рішення, яке може подолати незліченну кількість невдач веб-дизайнера, використовуючи його, я б не ризикував поганим враженням, яке я міг би створити, коли (ні, якщо) хтось неминуче завантажує щось, що будується на не-mac-системі.
ssokolow

Збільшуючи це частково для практичних цілей і частково для розважальних цінностей. Емоджи - це відповідь на всі життєві проблеми!
Шрідхар Сарнобат

Порада: використовуйте цей сайт, щоб скопіювати та вставити потрібні емоджі : emojipedia.org/upwards-black-arrow .
Шрідхар Сарнобат

4

На підставі пропозиції Wizek ви можете ввести свій код в урі даних.

data:text/html;charset=utf-8,
<html>
<link rel="shortcut icon" href="https://stackoverflow.com/favicon.ico">
<script type="text/javascript">
    alert('It works!')
</script></html>

І збережіть усе це як закладку. ( Спробуйте! Перетягніть код на панель вкладок)

На жаль, він працює лише для певних випадків (докладніше нижче).

Як це працює:

(Принаймні, в Chrome) Це схоже на закладку, використовуючи формат, javascript: "<html>...your html code here, including a javascript tag that will run when loaded...</html>"як пропонують інші рішення. У цьому випадку html зі сторінки, на якій ви перебуваєте, буде замінено html із закладок, але розташування залишається незмінним і сам закладка все ще не матиме розташування, тому Chrome не зможе зберегти для цього фавікон.

На відміну від цього, із закладкою data-uri ми переходимо на іншу сторінку , у неї є власне місцезнаходження, і браузер може зберегти для неї фавікон. Подумайте про це як "Розміщення веб-сайту у вашому браузері", до якого ви могли б отримати доступ на інших комп’ютерах, якщо синхронізувати закладки. Ви також можете використовувати базове зображення64 для фавікону замість URL-адреси, якщо ви хочете, щоб все було локальним.

Він має обмеження.

  • При натисканні на неї вона залишає поточну сторінку і завантажує сторінку в дані . Тому ви не зможете використовувати його для книжкових марок, які взаємодіють із поточною сторінкою, лише для коду, який ви можете виконати на іншій сторінці.

  • Не використовуйте // для коментарів. Оскільки це буде збережено в один рядок, загорніть їх у / ** / і не забудьте свої крапки з комою

  • У FF це зберегло фавікон, але я не зміг встановити його завжди відкривати спливаючі вікна, якщо я хочу використовувати window.open (), оскільки це не дозволяє мені зберегти поведінку за замовчуванням для URL-адрес даних.


Як приклад:

Використовуючи цю техніку, я створив невеликий Bookmarklet With Generator Icon. Ви можете перетягнути цей код у свій рядок URL-адрес (або зберегти його як закладку), щоб використовувати його. Це проста сторінка з областю введення для коду та піктограми, а потім генерує закладку з піктограмою

data:text/html;charset=utf-8,<html><head>
    <title>Bookmarklet With Icon Generator</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" ></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >
    <link rel="shortcut icon" href="https://www.freefavicon.com/freefavicons/objects/plain-thumbs-up-152-237293.png">
</head>
<body>
    <div class="container">
        <div class="page-header">
            <h2>Write your javascript  and specify a favicon, then drag the button to your bookmarks bar</div>
                </h2>
        <a id="bookmarkbutton" href='' ondragend='this.click()' draggable="true" class="btn btn-primary btn-lg" role="button"> 
            Drag me to your bookmarks bar! </a><br /><br />
        <div> 
            <label for="fav_href">Favicon:</label>
            <input id="fav_href" value='https://stackoverflow.com/favicon.ico' style='width:100%'></input> </div><br />
        <div>
            <label for='ta'>Write your JavaScript below</label>
            <textarea id="ta" style="width:100%;height:50%">
setTimeout(()=>{            &%2313
    alert('hello world');   /*Use this format for comments, use %2523 instead of hash (number sign)*/ &%2313
    window.history.back();  &%2313
},200);
            </textarea></div>
  </div>
    <script type = "text/javascript">
        fav_href.onchange = ta.onchange = function(){
            bookmarkbutton.href = 'data:text/html;charset=utf-8,<html><head>'+
                '<link rel="shortcut icon" href="'+ fav_href.value +'">'+
                '<script type="text/javascript"> '+ ta.value +'<\/script>';
            };
        ta.onchange();
    </script>
</body>

Ще один приклад: Bookmarklet, щоб відкрити месенджер Facebook у власному маленькому вікні (може не працювати, якщо браузер блокує спливаючі вікна за замовчуванням)

data:text/html;charset=utf-8,
<html>
    <link rel="shortcut icon" href="https://facebook.com/images/messengerdotcom/favicon/favicon.ico">
    <script type="text/javascript">
        url = 'https://www.messenger.com/';
        w = 740; h = 700;
        x = parseInt( screen.availWidth/2 - w/2 );
        y = parseInt( screen.availHeight/2 - h/2 );
        nw = window.open(url,'', 'width='+ w +',height='+ h +',top='+ y +',left='+ x);
        nw.focus();
        setTimeout(()=>{ 
          window.history.back();
          window.close();  
        },200);
    </script>

Інші способи вирішення проблеми Chrome для отримання піктограм закладок:

  • Експорт панелі закладок, її редагування та імпорт знову, як описано у цій відповіді /superuser/212722/how-can-i-add-a-favicon-to-a-bookmarklet-in- Гугл хром

  • Перетворення закладок у розширення. Це вже не буде закладкою, але він матиме ту саму функцію. Ось простий веб-сайт, який робить це для вас http://sandbox.self.li/bookmarklet-to-extension/, а потім просто змініть файл значків на те, що вам потрібно. Недолік цього полягає в тому, що розширення використовують барабан (приблизно 10 Мб для простих?), Якщо у вас багато і мало оперативної пам'яті, це може бути не для вас рішенням. Також у вас не буде тексту, як у закладці, лише піктограма.


1
Це працює лише для Chrome і Safari. На жаль, не Mozilla. Наміром закладок є перехресний браузер, IMO.
сийпкес

Це як єдине, що працювало. Свята корова, спасибі тобі велике.
Алекс Білс

3

Можна призначати та змінювати favicon фавікону за допомогою javascript та полотна (див. Дивовижну гру Favicon Defender of the Favicon ). Вихідний код гри допоможе вам це зробити (він в основному покладається на використання функції toDataUrl () на полотні, як це видно на рядку 554 джерела).

// set favicon
if( !stupidBrowser && useIcon )
{
     var    icon=$('favicon');
     (newIcon = icon.cloneNode(true)).setAttribute('href',ctx.canvas.toDataURL());
     icon.parentNode.replaceChild(newIcon,icon);
}

Що відбувається, коли закладку, що налаштовує фавікон таким чином, клацають або зберігають? Я не знаю, але було б приємно спробувати. Можливо, веб-переглядач збереже його?


1
(Випробувано в Chrome) Немає рішення. Коли ви змінюєте фавікон за допомогою книжкового макета, ви все ще знаходитесь в тому самому місці. Веб-переглядач може змінити піктограму закладок на поточній сторінці, але він не призначить її закладці.
aljgom

1

Я думаю, що можливим способом є використання символу char unicode в якорі закладок, як ваша ікона:

http://unicode-table.com/en/#cyrillic

просіюючи всі можливі символи, ви можете знайти символ, який більше нагадує потрібну піктограму


1

Отже, це ще не повне рішення, але це може бути кроком до робочого напрямку.

data:кодування піктограми в data:HTML-кодуванні -uri працює, на мій подив.

data:text/html;charset=utf-8, <title>Separator Tab</title><link rel="shortcut icon" href="data:image/png;base64,AAABAAEAEBAAAAEAIAAoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/5aWlv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP+Wlpb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/lpaW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/5aWlv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP+Wlpb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/lpaW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/5aWlv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP+Wlpb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/lpaW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/5aWlv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP+Wlpb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/lpaW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5aWlv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWlpb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" /> Separator Tab

Оскільки це <html>, ми можемо і <script type="javascript">там забігти .

Для деяких закладок цього вже може бути більш ніж достатньо. Для інших, хто хотів би змінити поточну сторінку або хоча б отримати якусь інформацію від неї перед відкриттям нової вкладки, ще не вдається. Цю відповідь я оновлю, якщо знайду спосіб це зробити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.