jQuery移动弹出窗口$.mobile.changePage Bug?

3
弹出窗口看起来真的很有bug(不适合发布)。如果关闭弹出窗口(应该是这样的)将会触发关闭事件,但是当您切换到另一页(多页面布局)时,也会触发关闭事件。这根本不应该发生,因为您可能从未打开过弹出窗口,但是在切换页面时却触发了关闭事件(他们怎么会漏掉这个问题呢?)。
另外,在弹出窗口的关闭事件中,我尝试使用$.mobile.changePage(../schedule.html)返回到先前的页面,但是如果我在弹出窗口的关闭事件中这样做,会发生非常奇怪的事情。所以这段代码:
$( "#somepage #popupstatus" ).bind({
    popupafterclose: function(event, ui) 
    {
        console.log('closing popup');
        if (isPopupVisible)
        {
            isPopupVisible=false;
            //do stuff
            $.mobile.changePage('../schedule.html');
        }       
    }
});

会让你跳回到先前的页面...然后又会跳回到这个页面。
为什么?这是另一个 bug 吗?有其他人遇到过这个问题吗?

2个回答

2

我遇到了一个类似的问题,我在弹出窗口上有一个确认按钮。我发现在改变页面之前需要关闭弹出窗口。显然,只要改变页面,弹出窗口也会关闭。我从以下代码修改:

$('#confirm_status').popup('close');
self.loadWorkOrders();
$.mobile.changePage('#work_orders');

to:

self.loadWorkOrders();
$.mobile.changePage('#work_orders');

现在它正在正确地工作。


1
遇到了同样的问题,删除了 .popup("close") 方法后它开始起作用了! - zxqx

0

我遇到了类似的问题。

第一页(列表页)转到第二页(详细页),用户点击按钮并成功进行Ajax-POST后,弹出窗口被打开。关闭弹出窗口时,会发出一个changePage到第一页的命令。这导致再次进入第二页时触发了popupafterclose事件。

在该事件中使用简单的布尔检查来防止这种情况(当发出POST请求时设置为true,当打开弹出窗口时设置为false)会导致其他奇怪的行为 - 初始从第一页到第二页的转换几乎总是重新执行,因此用户总是会看到两个转换:在弹出窗口关闭后,直接从第一页到第二页。

在这一点上,我放弃了,我将尝试使用对话框而不是弹出窗口。


1
我找到了解决方法。像你说的那样,使用一个布尔值。我的叫做“isPopupVisible”。如果它为真,则使用短暂的超时(1毫秒),然后返回上一页。这个方法有效,是一个临时的解决办法,直到修复完成。 - Juw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接