Iphone 检测如何加载非全屏WebApp(主屏幕与Safari)

Iphone 检测如何加载非全屏WebApp(主屏幕与Safari),iphone,web-applications,mobile,mobile-safari,Iphone,Web Applications,Mobile,Mobile Safari,很容易检测全屏WebApp(即包含的WebApp)是如何启动的–只需检查window.navigator.standalone 对于非全屏WebApp是否也可以这样做 我想向用户显示一个“书签此网页”气泡(如on),但如果网页是从主屏幕启动的,我不想显示它 我很确定这是可能的,因为YouTube是一个非全屏网络应用程序,当它从主屏幕启动时不会显示“书签我!”气泡,但是:window.navigator.standalone会告诉你该应用程序当前是否处于全屏模式(如果浏览器完全支持此属性) 这意味

很容易检测全屏WebApp(即包含
的WebApp)是如何启动的–只需检查
window.navigator.standalone

对于非全屏WebApp是否也可以这样做

我想向用户显示一个“书签此网页”气泡(如on),但如果网页是从主屏幕启动的,我不想显示它


我很确定这是可能的,因为YouTube是一个非全屏网络应用程序,当它从主屏幕启动时不会显示“书签我!”气泡,但是:
window.navigator.standalone
会告诉你该应用程序当前是否处于全屏模式(如果浏览器完全支持此属性)

这意味着:如果属性存在且为false,则您可能希望提供书签按钮。如果属性存在且为true,则不显示它(应用程序已从主屏幕运行)。如果属性缺失,则不显示书签按钮,因为用户代理不支持它

例如,尝试访问www.luscarpa.com。使用Safari,然后将其书签到主屏幕上,并注意差异


它也有关于全屏模式的信息(这是我了解它的地方):

看看在Safari中打开的youtube网站url,在url的最后一部分,有一个home/?bmb=1,我认为bmb=1实际上起了作用,当您将此页面添加书签时,url将包含此bmb变量,然后当您按下home web按钮时,您可以在服务器端检测到它,并知道它来自home web按钮。

if('standalone'位于navigator&&!navigator.standalone&(/iphone | ipod | ipad/gi)。test(navigator.platform)和(/Safari/i)。test(navigator.appVersion)){
if ('standalone' in navigator && !navigator.standalone && (/iphone|ipod|ipad/gi).test(navigator.platform) && (/Safari/i).test(navigator.appVersion)) {
        document.write('<link rel="stylesheet" href="add2home.css">');
        document.write('<script type="application/javascript" src="add2home.js"><\/s' + 'cript>');
}
文件。写(“”); 文件。写(“”); }
这是一个小剧本,似乎可以完成任务


当然,如果您没有使用add2home脚本,那么您应该更改文件名。

Horace,您可以研究Google的注释javascript源代码,该源代码似乎已用于YouTube气泡检测方案,网址为

我无法将
添加到我的web应用程序b/c中,它需要Safari控件才能工作(特别是我不想实现我自己的后退/前进按钮栏)由于我没有使用此元标记,
window.navigator.standalone
将永远不会为真。我想知道是否有其他方法可以确定我的应用程序是否通过主屏幕书签启动。您是否确实尝试过阅读window.navigator.standalone,如果元标记丢失了?从文档中我看不到它是真的uld需要元标记。更基本的方法是使用“”。这仅在从主屏幕启动时触发。将startup.png替换为不可缓存的动态页面,该页面会弹出图像,但也会存储请求的会话ID。在您的第一个“真实”页面上页面检查,如果在调用开始映像时保存了会话ID。如果是,您必须处于全屏模式。只是一个想法。没有尝试过。还有另一个想法:元标记仅对第一页有效。因此,让您的开始页具有元标记并检测独立属性。然后将用户重定向到“第二页”开始页面并传递一个参数,无论第一页是否从主屏幕开始。在第二页上,不要使用meta标记。如果未设置参数,请询问用户是否希望将您的应用程序添加到主屏幕。@Krumulur–除非还有一个
标记,否则
标记不会起任何作用。是的,我认为这是正确的approach.Youtube.com会在添加书签之前添加一个散列参数,如果加载带有该散列参数的网站,它就会知道是从书签启动的。哦,好吧,如果你看我答案的第四条评论,那正是我写的。:-)