Safariの[トップサイト]セクションでは、以下に示すように、iCloud.comの画像にログイン画面ではなくロゴが表示されます。通常、トップサイトには、ロードされたWebページの画像のみが表示されます(ロードされたページはこのようには見えません)。彼らがこれをどのように達成したかあなたは何か考えがありますか?Appleのドキュメントには何も見つかりませんでした。ご協力いただきありがとうございます。
5 に答える
トップサイト固有のプレビューを表示するために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
実際、Safariは<link>
タグなどを検索しません。使用できるものは2つあります。
PHPでの着信リクエストのHTTPヘッダー。
JavaScript
window
のオブジェクトのプロパティ。
2つの方法は非常にうまく機能し、確実に使用したい場合は、いずれか、または両方を使用できます。
PHP:
HTTPヘッダーを調べると、リクエストを送信するのがSafari Top Sites PreviewX_PURPOSE
である場合、に設定されていることがわかりpreview
ます。次に、通常のWebサイトに書き込む必要があります。
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
Webサイトを開こうとするSafariTopSitesPreviewpreview
の場合に値があります。ただし、通常のビューでは存在しません。したがって、この値をテストするときは、このプロパティの存在そのものとその真実性をテストする必要があります。次に、これは通常のWebサイトのコードです。window.navigator
if(window.navigator&&window.navigator.loadPurpose==="preview")
{
window.location.href="thumbnail link";//Redirect to the thumbnail
}
サムネイルページの場合:
if(!window.navigator||window.navigator.loadPurpose!=="preview")
{
window.location.href="normal link";//Redirect to the normal website
}
私からのちょっとしたトリック:
<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>
出典:
Apple Touchデバイスは、Webサーバーで合成済みの画像を探すことができます。これらの画像をクエリできることはわかっています。
- apple-touch-icon-114x114-precomposed.png
- apple-touch-icon-144x144-precomposed.png
- apple-touch-icon-57x57-precomposed.png
- apple-touch-icon-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">
ここで推測しているだけですが、サファリはトップサイトビューに表示する同じ画像を探しているのかもしれません。
これらのタイプの画像の詳細については、こちらをご覧ください
http://theksmith.com/technology/howto-website-icons-browsersdevices-favicon-apple-touch-icon-etc/
読み込みが完了すると、プログラムでページのスナップショットを取得すると思います。そして、上部のプログレスバーを見ると、iCloudがそれを示しているとき(iCloudロゴだけ)、ロードが完了し、小さなアニメーションを実行しています。
彼らは特にiCloudサービスのためにそれを作ったと思います。彼らはドメインがicloudドメインであるかどうかをチェックし、そうである場合は通常のサイトプレビューの代わりにこのロゴを表示します。