iPhone Javascript确认对话框错误

时间:2013-02-02 00:08:18

标签: javascript ios jquery-mobile mobile dialog

我弹出了一个javascript确认对话框,但是当我点击“取消”时,对话框关闭后,点击屏幕上的任意位置,对话框再次弹出。它只发生一次额外的时间,然后你可以再次点击页面而不会弹出对话框。

我只在运行iOS 5.0.1的iPhone / iPad上看到这个。我没有iOS 6设备,所以我不确定它是否在那里发生。

这是我正在使用的代码:

$(bpm.remoteAppDivName).on('tap', 'a.delete-pending-payment', function(event) { 

    if  (isJQMGhostClick(event)) { return false; }

    var deleteGlobalPaymentURL = $(this).attr('href');

    var confirmMsg = confirm ("Are you sure you want to do that?"); 

    if (confirmMsg === true){

        window.location = '/index.htm';

    }
    event.preventDefault();
    return false;

});

var lastclickpoint, curclickpoint;
var isJQMGhostClick = function(event){
    curclickpoint = event.clientX+'x'+event.clientY;
    var ret=false; 
    if (lastclickpoint === curclickpoint) {
        ret=true;
    } else {
        ret=false;
    }
    lastclickpoint = curclickpoint;
    return ret;
}

以下是问题页面的链接:http://www.5280skateparks.com/dev/confirmBug.htm

非常感谢任何帮助。

更新:我刚刚确认它也在iOS 6.0.1上发生。

1 个答案:

答案 0 :(得分:0)

这是jQuery Mobile“Ghost Click”中详细讨论的herehere。在论坛页面上,提出了一个解决方案,我在下面重复了一个小错误修复:

var lastclickpoint, curclickpoint;
var isJQMGhostClick = function(event){
    curclickpoint = event.clientX+'x'+event.clientY;
    var ret=false; 
    if (lastclickpoint === curclickpoint) {
      ret=true;
    } else {
      ret=false;
    }
      lastclickpoint = curclickpoint;
   return ret;
}

我稍微修改了这段代码,并不总是期望一对点击。此功能现在可以在0次点击次数和超过2次鬼点击的情况下正常工作。您可以通过检查点击处理程序开头的isJQMGhostClick(event)并在isJQMGhostClick函数返回true时忽略该事件来使用它。