iOS Web App:仅当应用程序独立时才显示内容

Posted

技术标签:

【中文标题】iOS Web App:仅当应用程序独立时才显示内容【英文标题】:iOS Web App: Showing content only if the application is standalone 【发布时间】:2011-11-11 07:51:27 【问题描述】:

如果用户从 Safari Mobile 访问我的网站示例,我如何在其中放置一个显示“添加到主屏幕”的空白页面?添加后会显示不同的内容。

【问题讨论】:

【参考方案1】:

您需要检查两件事。首先,它是否在 ios 设备上运行?二、是window.navigator.standalone == true

window.navigator.standalone 主要由 Webkit 浏览器用来指示应用程序处于全屏(或独立)模式。很多设备(例如运行 android 的手机)都支持此属性,但没有像 iOS 设备那样的“添加到主屏幕”选项,因此您需要同时检查两者。

演示:

javascript

function isIOS() 
    var userAgent = window.navigator.userAgent.toLowerCase();
    return /iphone|ipad|ipod/.test( userAgent );
;

function isStandalone() 
    return ( isIOS() && window.navigator.standalone );
;

window.onload = function () 
    if( isStandalone() || !isIOS() )  //either ios+standalone or not ios
        //start app
     else 
        //display add to homescreen page
    ;
;

【讨论】:

在打字稿中?【参考方案2】:

检查window.navigator.standalone

【讨论】:

对不起,我不明白你的意思。【参考方案3】:

代码略有不同,基于@ThinkingStiff解决方案,和这个other question on this Post,支持IOS7检测,提供CSS接口,在应用标题透明的情况下添加更多的padding-top。

isIOS7 = function() 
  return navigator.userAgent.match(/(iPad|iPhone|iPod touch);.*CPU.*OS 7_\d/i);
;
isStandaloneAndIOS7 = function() 
  return isIOS7() && window.navigator.standalone;
;
if (isStandaloneAndIOS7()) 
  body = document.getElementsByTagName("body")[0];
  body.className = body.className + " standalone";

【讨论】:

以上是关于iOS Web App:仅当应用程序独立时才显示内容的主要内容,如果未能解决你的问题,请参考以下文章

当且仅当 CGPoint 在视图内持续 2 秒时才启动函数

NSDateFormatter:仅当应用程序针对该语言进行本地化时才显示本地化日期

仅当 iOS11 可用时才包含类的扩展

IOS:仅当远程图像未更改时才缓存 SDWebImage

仅当应用程序在前台时才会收到 Android 通知

Pandas:仅当某个列值在过去 N 个月内出现 N 次时才保留行