【问题标题】:iPhone Javascript Confirm Dialog BugiPhone Javascript 确认对话框错误
【发布时间】:2013-02-02 00:08:18
【问题描述】:

我弹出了一个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 上发生。

【问题讨论】:

    标签: javascript ios jquery-mobile mobile dialog


    【解决方案1】:

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

    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 时忽略该事件来使用它。

    【讨论】:

    • 感谢您的快速响应。我会在星期一早上首先尝试您的解决方案并报告。周末愉快。
    • 我实施了您的解决方案,但遇到了同样的问题。我想知道这是否确实是上面提到的“Ghost Click”,或者我可能执行不正确。您可以在这里看到问题仍然存在:5280skateparks.com/dev/confirmBug.htm 我编辑了原始帖子以包含您提出的解决方案。
    • 能不能试试return false在ghost点击检查中代替return,在preventDefault后面加一个return false?
    • 我尝试在您提到的地方添加return false,但仍然无法正常工作。我最终使用了这个解决方案:stackoverflow.com/a/10364437/1720446 我唯一不喜欢这个解决方案的是我不能使用tap 作为一个事件。我不得不使用touchstart click。同样,我编辑了 OG 帖子以包含您的更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多