iOS Web应用程序 - 仅在添加到主屏幕时显示内容?

时间:2013-03-04 16:00:33

标签: javascript ios web-applications

我以前见过这个“解决方案”,但有一个重大缺陷!

这就是我想要实现的目标;

我有一个网络应用程序,要求用户在可以使用之前登录。出于各种原因,我不希望它只在常规Safari中使用,只能通过主屏幕(从美学角度看,它只在全屏时才真正起作用)。

因此,当用户浏览该网站时,它应检测是否已通过主屏幕打开(在这种情况下显示登录页面)或常规Safari(在这种情况下,它会显示一个启动画面,邀请查看者将其添加到主屏幕。)

我可以成功检测它是通过主屏幕还是现在(使用window.navigator.standalone)打开,但是我遇到的所有解决方案都涉及将用户重定向到不同页面(如果没有通过主屏幕打开) 。这个问题是用户会将错误的页面加入书签(或添加到主屏幕)。据我所知,没有办法指定一个不同的页面添加到主屏幕。

我尝试了以下,但似乎没有用;

/* Added to login page head */
$(document).ready()
        if (window.navigator.userAgent.indexOf('iPhone') != -1) {
            if (window.navigator.standalone == true) {
                initialize();
            }else{
                $('.container').load('/install.cfm')
            }
        }else{
            $('.container').load('/install.cfm')
        }

编辑:根据@ scunliffe的评论,我现在尝试了以下内容,它也不起作用(在脚本执行之前加载了jQuery,所以这应该不是问题);

if (window.navigator.userAgent.indexOf('iPhone') != -1) {
            if (window.navigator.standalone == true) {
                $('#logindiv').show;
            }else{
                $('#installdiv').show;
            }
        }else{
            $('#installdiv').show;
        }

2 个答案:

答案 0 :(得分:7)

您是否可以更改逻辑,以便登录页面是默认设置,但如果用户在iphone / iOS设备上?如果独立运行,他们会收到消息吗?

$(document).ready(function(){
    if(navigator.userAgent.indexOf('iPhone') != -1){//test for other iOS devices?
        if(window.navigator.standalone == true){
            //do stuff!
            initialize();
        } else {
            //show message telling user to add to their home screen...
        }
    } else {
        //show message that this must be run on device X/Y/Z...
    }
});

<强>更新

根据您更新的示例,您只需修改代码即可将show / hide称为方法。

$(document).ready(function(){
  if(window.navigator.userAgent.indexOf('iPhone') != -1){
    if(window.navigator.standalone == true){
      $('#logindiv').show();
    } else {
        $('#installdiv').show();
    }
  } else {
    $('#installdiv').show();
  }
});

<div id="logindiv">
  ...stuff to login here...
</div>
<div id="installdiv">
  ...note to install here...
</div>

答案 1 :(得分:2)

您可以尝试“添加到主屏幕”中使用的hash-trick这里是示例here

基本上它会检查URL的末尾是否有哈希值,如果确实存在,则表示它已添加到主屏幕,如果没有,那么它可以运行脚本然后将哈希添加到网址。因此,当他们将链接添加到主屏幕时,下次他们打开Web应用程序时,它将在屏幕上显示哈希值。它是一种混乱的方式,但它的工作原理。