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

标签 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;
        }

最佳答案

如果用户使用的是 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...
    }
});

更新:

根据您更新的示例,您只需修改代码以将显示/隐藏作为方法调用。

$(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>

关于javascript - iOS Web 应用程序 - 仅在添加到主屏幕时显示内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15205680/

相关文章:

javascript - knockout.js 和 observableArray 在第二次点击时不更新 DOM

spring - Java 9项目结构问题

web-applications - 实现 'popular content' 显示的最佳方式是什么?

javascript - Mootools "Cannot read property ' 调用“未定义”

javascript - 将内容附加到 JSON 数组中的 li 元素

javascript - 如何限制具有 parent 权利和底部值(value)的可拖动 child ?

ios - 如何在 segue 中获取选定的 TableView 单元格行?

ios - 来电后无法录音

iphone - 某些EKEvent与谓词不匹配

.net - 他们使用什么技术?