我正在尝试在加载页面后立即使用JQM打开一个对话框。但是,过早地使用data-role ='dialog'调用changePage会导致对话框显示并立即关闭。当data-role ='page'时,不会发生这种情况。使用setTimeout方法可以工作,但需要很大的延迟才能确保跨移动设备/浏览器的功能。
$.mobile.changePage("#login",{role:'page'});
当role = page时,它会保持打开状态
$.mobile.changePage("#login",{role:'dialog'});
当role = dialog时,对话框会短暂闪烁然后关闭
setTimeout(function(){$.mobile.changePage("#login",{role:'dialog'});},2000);
通常使用较长的延迟,但不合需要
请参阅演示:http://jsbin.com/eredac/2
注意:Firefox中没有问题
更新:也许可以通过执行以下操作解决此问题:
将autoInitializePage设置为false,获取url哈希,将活动页面设置为对话框(默认,第一页),手动初始化,当对话框完成时调用changePage并将url哈希作为目标?
这样的事情:
但是没有过渡动画就显示了对话框。我更喜欢另一种方式,但是不能接受> 1s延迟。因此,如果没有办法在正确的时间触发,我可能会满足于此。也许试着至少淡出对话? (编辑:添加淡入。对该结果中等满意。)