Javascript jquery mobile对话框在页面加载后关闭

Javascript jquery mobile对话框在页面加载后关闭,javascript,jquery,ajax,jquery-mobile,mobile-safari,Javascript,Jquery,Ajax,Jquery Mobile,Mobile Safari,伙计们,我有个问题,我希望有人能帮忙。当我的jquery移动应用程序加载时,它会检查我的服务器,查看用户所在平台是否存在本机应用程序。如果有,我会弹出一个对话框,询问他们是否愿意下载本机应用程序。问题是,我把这个检查放在哪里似乎无关紧要,当页面在mobilesafari中加载完毕时,对话框消失了。以下是我开始检查的代码: $( document ).ready(function() { checkRedirect(); }); 但我也尝试了pageinit和pagecreate。check

伙计们,我有个问题,我希望有人能帮忙。当我的jquery移动应用程序加载时,它会检查我的服务器,查看用户所在平台是否存在本机应用程序。如果有,我会弹出一个对话框,询问他们是否愿意下载本机应用程序。问题是,我把这个检查放在哪里似乎无关紧要,当页面在mobilesafari中加载完毕时,对话框消失了。以下是我开始检查的代码:

$( document ).ready(function() {
  checkRedirect();
});
但我也尝试了pageinit和pagecreate。checkRedirect()进行ajax调用,并根据结果弹出带有“$.mobile.changePage”的对话框

似乎浏览器仍然认为原始页面正在加载,然后在页面加载完成时以某种方式取消对话框。对不起,我没有更多的细节。我想我需要的是一个在整个页面加载后(以及所有ajax后台加载后)发生的事件,但我还没有找到它。欢迎提供任何帮助或建议


更新:与Omar讨论后,结果表明使用“弹出窗口”而不是对话框符合我的要求。

首先,在jQuery Mobile中使用
.ready()
是不正确的,请使用jQuery Mobile事件

一旦发生任何页面事件,您需要延迟打开对话框/弹出窗口,以确保页面已完全加载

setTimeout(function () {
 $.mobile.changePage('#dialog');
}, 50);

更新:
根据我们的讨论,在您的情况下使用jQM弹出窗口小部件更可靠。

首先,在jQuery Mobile中使用
.ready()
是不正确的,请使用jQuery Mobile事件

一旦发生任何页面事件,您需要延迟打开对话框/弹出窗口,以确保页面已完全加载

setTimeout(function () {
 $.mobile.changePage('#dialog');
}, 50);

更新:
根据我们的讨论,在您的情况下使用jQM弹出窗口小部件更可靠。

我尝试过。。。只要延迟超过页面加载的时间,它就可以工作。。。所以我可以设置很长一段时间的超时时间,但这似乎仍然很脆弱……是否有一个事件在浏览器认为加载页面完成后触发?@johnellis对话框是一个页面,但形状是对话框。您可以在一个事件
pagebeforechange
中执行此操作。演示:问题是,我不能吃默认条件,因为我不知道我会立即弹出对话框。。。我只知道在一个ajax调用之后。。。我想我可以让ajax调用同步。。。这就是我必须做的吗?@johnellis
pageshow
在页面加载后被触发,但我仍然认为您可能需要将检查延迟几毫秒。编辑:如果您打算使用
pageshow
请使用
.one
而不是
.on
,因为您需要它只发射一次。我试过了。。。只要延迟超过页面加载的时间,它就可以工作。。。所以我可以设置很长一段时间的超时时间,但这似乎仍然很脆弱……是否有一个事件在浏览器认为加载页面完成后触发?@johnellis对话框是一个页面,但形状是对话框。您可以在一个事件
pagebeforechange
中执行此操作。演示:问题是,我不能吃默认条件,因为我不知道我会立即弹出对话框。。。我只知道在一个ajax调用之后。。。我想我可以让ajax调用同步。。。这就是我必须做的吗?@johnellis
pageshow
在页面加载后被触发,但我仍然认为您可能需要将检查延迟几毫秒。编辑:如果您打算使用
pageshow
请使用
.one
而不是
.on
,因为您需要它只发射一次。