我试图在页面加载后立即打开与 JQM 的对话框。但是,过早使用 data-role='dialog' 调用 changePage 会导致对话框显示并立即关闭。当 data-role='page' 不会发生这种情况。使用 setTimeout 方法可以工作,但需要大量延迟以确保跨移动设备/浏览器的功能。
$.mobile.changePage("#login",{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 的延迟是不可接受的。所以如果没有办法在正确的时间触发,我可能会接受这个。也许尝试至少在对话框中淡入淡出?(编辑:添加了淡入。对这个结果比较满意。)