2012-06-15 113 views
7

在Safari的熱門網站部分,iCloud.com圖像顯示徽標而不是登錄屏幕,如下所示。通常,Top Sites只顯示加載的網頁的圖片(並且加載的網頁看起來不像這樣)。你有什麼想法他們如何完成這個?我在Apple的文檔中找不到任何東西。謝謝你的幫助。Safari熱門網站預覽

enter image description here

+0

有些東西我不明白:獎金的目標是比菲爾的更好的答案和更多的細節。那麼爲什麼你向菲爾提供賞金,而不是給我? – Mageek

+0

@Mageek對不起,我在菲爾回答之前開始了賞金,因爲沒有給出的答案是正確的。我非常感謝你的回答,但菲爾首先回答。我給了你一個投票。 –

+0

你等到賞金結束了嗎? – Mageek

回答

7

這裏的它是如何在iCloud上做展示一個熱門網站特定預覽:(編輯格式化)

if (window.navigator && window.navigator.loadPurpose === "preview") { 
    window.location.href = "http://www.icloud.com/topsites_preview/"; 
}; 

來源:http://blog.raffael.me/post/18565169038/defining-how-your-website-looks-like-in-safari-topsites

+0

+1'因爲這一切都有道理。我也檢查過,這個腳本位於icloud網站的頂部。這足以在'topsites_preview /'預覽模板下創建,所有應用都可以工作。感謝菲爾;) –

0

我相信他們編程搶當它完成加載頁面的快照。如果您查看頂部的進度條,當iCloud顯示(僅iCloud徽標)時,它已完成加載並正在做一些動畫。

+0

該網站從來沒有顯示只是徽標,但它從來沒有這麼大。 –

0

我認爲他們是專門爲他們的iCloud服務製作的,他們只是檢查該域名是否是icloud域名,是否顯示這個標識而不是正常的網站預覽。

0

Apple觸控設備可以在您的網絡服務器上查找預先分解的圖像。我知道它可以查詢這些圖片:

  • 蘋果觸摸圖標114x114-precomposed.png
  • 蘋果觸摸圖標144x144-precomposed.png
  • 蘋果觸摸圖標57x57 -precomposed.png
  • 蘋果觸摸圖標最高72x72,precomposed.png

如果你看看iCloud.com的烴源你會發現它會指向這些資源過於<link />元素(因爲他們不在根部):

<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/system/cloudos/en-us/1JPlus21/source/resources/images/apple-touch-icon-114x114.png"> 

我只是猜測在這裏,但也許Safari瀏覽器尋找相同的圖像顯示在頂部網站視圖。

更多關於這些類型的圖像可以在這裏找到

http://theksmith.com/technology/howto-website-icons-browsersdevices-favicon-apple-touch-icon-etc/

+0

最近,我製作了一些附帶iPhone圖標的網站,所以如果你的答案是正確的,而不是打印屏幕,我應該得到特殊的圖標,但是在將網站添加到頂部網站後,我沒有其他任何東西,但仍然在我的網站上進行了網頁打印。所以我認爲這是另一回事或更多。 –

+0

@Sófka看起來像菲爾想出來的(如果有效的話)我只是在猜測:) – sg3s

+0

是的;)我檢查了這個理論,因爲它很有趣;)嘗試總是一件好事!乾杯;) –

6

事實上,Safari不會搜索<link>標記或其他任何東西。還有的是,我們可以用兩種dfifferent的事情:在PHP傳入請求的

  • 的HTTP標頭。

  • window對象的屬性JavaScript

這兩種方式的工作非常好,你可以使用它們中的任何一個,或者如果你想確定它們兩個都可以。


PHP

如果我們檢查HTTP標頭,我們會看到,當它Safari瀏覽器的Top Sites預覽發送請求,有X_PURPOSE被設置爲preview。然後,你必須在正常的網站寫:

if($_SERVER["HTTP_X_PURPOSE"]=="preview") 
{ 
    header("Location:thumbnail link");//Redirect to the thumbnail. 
} 
//Display the normal website. 

哪裏還有縮略圖,你可以在頁面中添加:

if($_SERVER["HTTP_X_PURPOSE"]!="preview") 
{ 
    header("Location:normal link");//Redirect to the normal website. 
} 
//Display the thumbnail. 

所以,你不能看到縮略圖,除了從Safari瀏覽器熱門網站預覽


的JavaScript

window.navigator.loadPurpose的值爲preview如果它是Safari瀏覽器的Top Sites預覽它試圖打開該網站。但是,如果它處於正常視圖,則window.navigator不存在。因此,當你測試這個值時,你必須測試這個屬性的存在以及它的真實性。那麼這是正常瀏覽網頁的代碼:從我

if(!window.navigator||window.navigator.loadPurpose!=="preview") 
{ 
    window.location.href="normal link";//Redirect to the normal website 
} 

小竅門::

if(window.navigator&&window.navigator.loadPurpose==="preview") 
{ 
    window.location.href="thumbnail link";//Redirect to the thumbnail 
} 

而對於縮略圖頁面

如果你真想把一個<link>標籤你可以寫:

<link rel="safari-preview" href="thumbnail link" /> 

,然後添加在頭節的結尾:

<script>for(var i=0,link=document.getElementsByTagName("link"),l=link.length;i<l;i++)if(link[i].getAttribute("rel")==="safari-preview"&&window.navigator&&window.navigator.loadPurpose==="preview")window.location.href=link[i].getAttribute("href");</script> 

來源

+0

你知道,如果Chrome使用相同的技術來獲取最流行頁面的預覽? – Simon

+0

@西蒙不,我不知道,對不起。 – Mageek