在 Safari 的 Top Sites 部分,iCloud.com 图片显示的是徽标而不是登录屏幕,如下所示。通常,Top Sites 只显示加载网页的图片(加载的页面看起来不是这样)。你知道他们是如何做到这一点的吗?我在 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>
标签或其他任何东西。我们可以使用两种不同的东西:
PHP中传入请求的 HTTP 标头。
JavaScript
window
中对象的属性。
这两种方法效果很好,你可以使用其中任何一种,如果你想确定的话,甚至可以同时使用它们。
PHP:
如果我们检查 HTTP 标头,我们将看到当发送请求的是Safari Top Sites PreviewX_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 Top Sites Preview之外,您无法看到缩略图。
JavaScript:
window.navigator.loadPurpose
preview
如果它是尝试打开网站的Safari Top Sites Preview ,则具有该值。但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" />
然后在 head 部分的末尾添加:
<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 触控设备可以在您的网络服务器上查找预先合成的图像。我知道它可以查询这些图像:
- apple-touch-icon-114x114-precomposed.png
- apple-touch-icon-144x144-precomposed.png
- 苹果触摸图标 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">
我只是在这里猜测,但也许 safari 会寻找相同的图像以显示在顶部站点视图中。
可以在此处找到有关这些类型图像的更多信息
http://theksmith.com/technology/howto-website-icons-browsersdevices-favicon-apple-touch-icon-etc/
我认为他们是专门为他们的 iCloud 服务制作的,他们只是检查域是否是 icloud 域,如果是,他们会显示此徽标而不是正常的站点预览。
我相信他们会在页面加载完成后以编程方式抓取页面的快照。如果您查看顶部的进度条,当 iCloud 显示(只是 iCloud 徽标)时,它已完成加载并正在做一个小动画。