Yer imi araç çubuğuna sürüklendiğinde favicon / simge nasıl ayarlanır?


108

Kendime bir yer imi yaptım ve gayet iyi çalışıyor, ancak Opera veya Firefox'ta bir araç çubuğuna eklendiğinde, tarayıcı için varsayılan yer imi simgesini (sırasıyla bir küre ve bir yıldız) alıyor. Sitemde favicon var ve pencere, sekme ve hatta [site] yer imi belirttiğim favicon'u kullanıyor. Benim yer imim değil.

Yer imi favicon'u da alacak şekilde sitemi veya yer imini nasıl kodlayabilirim?

Kullanıcıların favicon'u daha sonra ayarlamak için kullanabilecekleri çeşitli manuel bilgisayar korsanlığı tekniklerinin farkındayım, ancak bunlar istenmeyen çözümler.


Örnek: Opera'da yer imini sürüklemek, yer imi uygulamasının bir Diigo simgesi almasına neden olur: diigo.com/tools/diigolet
Pistos

bağlantı verdiğiniz kişi bunu benim için firefox'ta yapmıyor.
benlumley

Evet, IE'de de değil. Ama bunu Opera'da yapıyor. :)
Pistos

Üzgünüm, Opear 9.6'yı yeni denedim ve Opera'da benim için de çalışmıyor.
Guss

1
Burada bir çözüm önerisi var: wiki.whatwg.org/wiki/Link_Icons
lapo

Yanıtlar:


23

Bir yer imi, javascript://şemayı kullanır ve bu nedenle, bir favicon'un yüklenebileceği bir etki alanına sahip değildir.

Dolayısıyla, şu anda bir yer imi için bir favicon sağlamanın bir yolu yoktur. Şöyle düşünün: Javascript sandbox olayının tamamını hatırlayın - burada Javascript, çalıştığı web sayfasının etki alanı dışındaki hiçbir şeye erişemeyebilir? O an izlediğiniz sayfanın etki alanına bağlı olması gereken bir yer imi, kendi web sitenizdeki bir favicon'a da bağlanamaz.

Güncelleme: Hans Schmucker'in cevabına göre, tarayıcı tarafından yer imi menüsüne yüklendiğinde, favicon'a sahip bir HTML belgesi oluşturacak bir yer imi oluşturma olasılığı vardır. Muhakeme işe yarayabilir gibi görünüyor, ancak henüz böyle bir şeyi eylemde görmedim ve testlerim olumsuz çıktı.


17

Bunu şu şekilde yapabilirsiniz:

  1. Yer işaretinizi Yer İşaretleri Çubuğuna sürükleyin.
  2. Yanında, yer iminiz için kullanmak istediğiniz favicon'un bulunduğu bir sitenin yer imini oluşturun.
  3. Yer İmleri Yöneticisi'ni açın, Düzenle açılır menüsünü tıklayın ve Dışa Aktar'ı seçin, yer işaretlerinizi html dosyası olarak kaydedin.
  4. Bu html dosyasını metin düzenleyicide açın.
  5. Yeni oluşturduğunuz yer işaretini bulun, diyelim ki onun Gmail yer imi, bunun için bir html kodunuz olmalı, şuna benziyor:

<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 etiketinin tamamını kopyalayın
  2. Aynı dosyada, oluşturduğunuz yer imini bulun ve kopyaladığınız ICON etiketini yer imi etiketinize ekleyin :

<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. Bu dosyayı kaydedin
  2. Chrom Yer İşaretleri Yöneticisine dönün, tekrar Düzenle'yi tıklayın ve İçe Aktar'ı seçin
  3. Az önce düzenlediğiniz HTML dosyasını içe aktarın, yer iminizin artık bir favicon'u var .

Temel olarak prosedür, bir yer imi etiketinin ICON özniteliğini almak ve bunu yer imi etiketine eklemektir.

görüntü açıklamasını buraya girin


1
(Bu çok eski bir soru, ama ...) Son kullanıcı işlemine hiç ihtiyaç duymayan bir çözüm arıyordum (yer imini araç çubuğuna eklemek dışında). ör. bir site sahibi simgeyi belirtmek için ne yapabilir.
Pistos

1
Benim için bu en iyi cevap. Çalışır ve kapsamlı bir şekilde açıklanır. Çok teşekkür ederim.
tsuma534

13

Bu tam olarak doğru değil: Bir yer iminin etki alanı yoktur, ancak bir konumu vardır (yer imi uygulamasının kendisi) ve buna bir simge atayabilirsiniz. Bundan sonra, tarayıcının simgeleri nasıl kaydettiği önemli (Firefox bir yer iminin simgesini kalıcı olarak kaydeder, diğer tarayıcılarda o kadar şanslı olmayabilirsiniz).

PS Security bununla ilgilenmiyor bile, simgeler her yerden gelebilir. Kısıtlama yoktur.

Bkz. Http://www.tapper-ware.net/blog/?p=97


3
Muhakeme kulağa işe yarayabilir gibi gelse de, bağlantı kurduğunuz blogda sağlanan örnekler ya Firefox'un yer imi için gösterebileceği ya da gösteremeyeceği bir simgeye sahip bir belge oluşturuyor ya da aslında Javascript'i keyfi sayfalarda çalıştıran yer imleri - ama değil ikisi de (Firefox 7'de test edilmiştir). Hala bu işe ikna olmadım.
Guss

13

Tapper [ware] ve Restafarian sitesini okuduktan sonra, işte bulabileceğim en basit çözüm:

<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 ve FF'de harika çalışır, ancak FF4, simgeyi yer imleri çubuğuna kaydedecek tek tarayıcıdır. Göründüğü gibi: http://cl.ly/5WNR


Yer imleri hakkında daha fazla şey öğrenmeye çalışıyorum, kodu yeni başlayanlara biraz açıklayabilir misiniz? Teşekkürler
Andrew Mackenzie

Elbette. Tıkladığınızda mevcut sayfanın URL'sini kontrol eder. Yer iminizin 'barındırıldığı' sayfadaysanız (4. satır), sayfaya istediğiniz favicon'u gösteren bir bağlantı öğesi yazar. Tarayıcınız bunu görecek ve favicon'u indirecektir. Tarayıcı bunu önbelleğe alır ve yer imi çubuğunuzdaki simgeyi kullanır. Başka bir sayfadaysanız, yer iminizin yapması gerekeni yapacaktır.
Brian McAllister

5
Ben anlamadım. Bir yer imini favoriler çubuğunuza sürüklediğinizde ( burada Delicious yer imi ile yaptığı gibi ) bu kodu çalıştıran nedir? Yer imi uygulamasının neden tıklandığını (ve kodun çalıştığını), favoriler çubuğuna kaydedilinceye kadar, yani tarayıcı simgesine yerleştikten sonra, anlamıyorum?
dumbledad

6

Bu, neredeyse istediğinizi yapan güzel bir tekniktir.

Mac'imde harika çalışıyor✅, ancak Windows 7'de çalışmasını sağlayamadım.❌

"Emoji" 🈳 kullanın. Bunlar aynı zamanda renkli simgeler gibi görünen Unicode karakterleridir. Yalnızca önceden tanımlanmış bir resim listesinden seçim yapabilirsiniz, ancak aslında bu fena değil - eğer yapmaya çalıştığınız tek şey kullanıcıya yer iminin ne yaptığını hatırlatmak için bakacak bir şey vermekse.

Örneğin, bazı "güvenlik anahtarı" yer imi oluşturuyorum📖. Bu yüzden yer imi adımda 🔑 kullanıyorum! 😃😊

Yani temelde resmi görüyorsunuz🎑 yer imleri çubuğunda 😝

Yer iminize uygun bir Emoji bulmanıza yardımcı olması için bu siteyi kullanın: http://emojipedia.org/symbols/


1
Bir sürü "yazı tipinde bu kod noktası için glif yok" işareti alıyorum. Linux'ta Firefox kullanıyorum, bu, geri dönüş davranışının onları sistemdeki herhangi bir yazı tipinde bile bulamadığı anlamına geliyor . Bunların, blog yazarlarının web tasarımcılarına kaçınmalarını söylediği Mac'e özgü emoji glifleri olduğunu tahmin etmekte haklı mıyım?
ssokolow

Evet. Ancak, istemcinizin emoji görüntüleyebilen bir bilgisayarda çalıştığını biliyorsanız, onları görüntülemek o kadar kötü mü? Kendi kişisel kullanımım için, kullanıcıların emoji çıkarmak isteyip istemediklerine karar vermelerine izin vereceğim. Değilse, herhangi bir çıktı vermem, yalnızca düz metin alırlar.
Theo

Bunun, web tasarımcısında onu kullanan sayısız başarısızlığın üstesinden gelebilecek bir çözüm olmasının yanı sıra, birisi kaçınılmaz olarak Mac olmayan bir sistem üzerine kurduğum bir şeyi yüklediğinde (değilse) yapabileceğim kötü izlenimi riske atmam.
ssokolow

Bunu kısmen pratik amaçlar için ve kısmen de eğlence değeri için artırmak. Emojiler hayatın tüm sorunlarının cevabıdır!
Sridhar Sarnobat

İpucu: İhtiyacınız olan emojileri kopyalayıp yapıştırmak için bu siteyi kullanın: emojipedia.org/upwards-black-arrow .
Sridhar Sarnobat

4

Wizek'in önerisine dayanarak, kodunuzu bir data- uri'ye koyabilirsiniz.

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>

Ve hepsini bir yer imi olarak kaydedin. ( Deneyin! Kodu sekme çubuğunuza sürükleyin)

Maalesef yalnızca belirli durumlarda işe yarar (daha fazlası aşağıda).

Nasıl çalışır:

(En azından Chrome'da) javascript: "<html>...your html code here, including a javascript tag that will run when loaded...</html>"Diğer çözümlerin önerdiği gibi biçimi kullanan bir yer imine benzer . Bu durumda, bulunduğunuz sayfadaki html, yer imi uygulamasındaki html ile değiştirilir , ancak konum aynı kalır ve yer imi uygulamasının kendisi hala bir konuma sahip olmayacağından Chrome bunun için bir favicon kaydedemez.

Buna karşılık, bir data-uri yer imi ile diğer sayfaya gidiyoruz , kendi konumu var ve tarayıcı bunun için bir favicon kaydedebilir. Bunu, yer imlerinizi senkronize ederseniz diğer bilgisayarlarda erişebileceğiniz "Tarayıcınızda bir web sitesi barındırma" olarak düşünün. Her şeyi yerel tutmak istiyorsanız, favicon için url yerine bir base64 görüntüsü de kullanabilirsiniz.

Sınırlamaları vardır.

  • Tıkladığınızda, geçerli sayfadan çıkar ve sayfayı verilere yükler . Bu nedenle, mevcut sayfayla etkileşime giren kitapçıklar için, yalnızca farklı bir sayfada çalıştırabileceğiniz kod için kullanamazsınız.

  • Yorumlar için // kullanmayın. Hepsi tek satırda kaydedileceği için / ** / içine alın ve noktalı virgüllerinizi unutmayın

  • FF'de favicon'u kaydetti, ancak window.open () kullanmak istersem her zaman açılır pencereleri açacak şekilde ayarlayamadım çünkü veri url'leri için varsayılan bir davranışı kaydetmeme izin vermiyor


Örnek olarak:

Bu tekniği kullanarak Icon Generator ile küçük bir Bookmarklet oluşturdum. Bu kodu kullanmak için URL çubuğunuza sürükleyebilir (veya yer imi olarak kaydedebilirsiniz). Bu, kod ve simge için bir giriş alanına sahip basit bir sayfadır ve ardından simgesiyle bir yer imi oluşturur

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>

Başka bir Örnek: Facebook messenger'ı kendi küçük penceresinde açmak için Bookmarklet (tarayıcınız varsayılan olarak açılır pencereleri engelliyorsa çalışmayabilir)

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>

Yer işareti simgelerini almak için diğer Chrome geçici çözümleri:

  • Yer imleri çubuğunu dışa aktarma, düzenleme ve bu yanıtta açıklandığı gibi yeniden içe aktarma /superuser/212722/how-can-i-add-a-favicon-to-a-bookmarklet-in- Google Chrome

  • Yer imi uygulamasını bir uzantıya dönüştürme. Artık bir yer imi olmayacak, ancak aynı işleve sahip olacak. İşte bunu sizin için yapan basit bir web sitesi http://sandbox.self.li/bookmarklet-to-extension/ ardından simge dosyasını istediğiniz şekilde değiştirin. Bunun dezavantajı, uzantıların ram kullanmasıdır (basit olanlar için yaklaşık 10mb?), Çok fazla ve az ramınız varsa, bu sizin için çözüm olmayabilir. Ayrıca, bir yer imindeki gibi bir metne sahip olmayacaksınız, yalnızca simgeye sahip olacaksınız.


1
Bu yalnızca Chrome ve Safari için çalışır. Ne yazık ki Mozilla değil. Bir yer iminin amacı çapraz tarayıcı, IMO olmaktır.
sijpkes

Bu, işe yarayan tek şey gibi. Kutsal inek, çok teşekkür ederim.
Alex Beals

3

Favicon'u javascript ve canvas kullanarak favicon'a atamak ve değiştirmek mümkündür (muhteşem favicon oyunu Defender of the Favicon'a bakın ). Oyunun kaynak kodu bunu yapmanıza yardımcı olacaktır (temelde kaynağın 554 satırında görüldüğü gibi tuval üzerinde toDataUrl () işlevinin kullanımına dayanır).

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

Favicon'u bu şekilde ayarlayan bir kitapçık tıklandığında veya kaydedildiğinde ne olur? Bilmiyorum ama denemek güzel olabilir. Tarayıcı kaydedebilir mi?


1
(Chrome'da test edilmiştir) Çözüm yok. Bir kitapçık kullanarak favicon'u değiştirdiğinizde, hala aynı konumdasınızdır. Tarayıcı, geçerli sayfanın bir yer iminin simgesini değiştirebilir, ancak kitapçığa bir yer imi atamaz.
aljgom


1

Yani, bu henüz tam bir çözüm değil, ancak çalışma yönüne doğru bir adım olabilir.

data:data:-uri kodlu html'de bir simgenin kodlanması beni şaşırttı.

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

Bu olduğu için oraya da <html>koşabiliriz <script type="javascript">.

Bazı yer imleri için bu zaten fazlasıyla yeterli olabilir. Mevcut sayfayı değiştirmek veya en azından yeni bir sekme açmadan önce ondan biraz bilgi almak isteyenler için, henüz büyük şans. Bunu yapmanın bir yolunu bulursam bu yanıtı güncelleyeceğim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.