confirm()错误总是在iPad上停止默认操作

时间:2014-07-30 12:09:12

标签: javascript jquery ipad

我正在测试iPad上的网站以确保其有效。我遇到了一个我无法解决的问题:

向事件添加确认会停止元素的操作(锚定/提交):

var touchEvent = 'ontouchstart' in document.documentElement ? 'touchstart' : 'click';
$('.Back2Overview').on(touchEvent, function(e){
    if( !confirm('Some Question') ){ alert(1); e.preventDefault(); }
    else{ alert(2);}
});

点击.Back2Overview时,系统会提示问题:
如果按[取消],我会收到1警报,并且不会按预期采取进一步操作 如果我按[确定],我会按预期收到2警告,但不会采取进一步操作,这是不受欢迎的

我简化了页面。 myPage.html ONLY 包含此内容,而不是更多字节:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.js"></script>
<a href="/beheer/klanten/">Terug</a>

<script>
    var touchEvent = 'ontouchstart' in document.documentElement ? 'touchstart' : 'click';
    $(document).ready(function(){
        $('a').on(touchEvent, function(e){
            confirm('Some Question');
        });
    });
</script>

它仍然没有真正继续默认操作。提交者不会提交,在这种特殊情况下,锚不起作用。如果我在提示后非常快有时它会工作。

  • 没有其他代码与html的这一部分冲突。
  • 在Firefox(31),IE8和Chrome(36)
  • 中完美运行

1 个答案:

答案 0 :(得分:0)

<强> TL; DR:
不要将touchstart用作事件,只需使用click

更长的回答:
“回到过去”iOS不支持click事件,而是touchstarttouchstop。 我尝试使用.on('click touchstart')解决此问题,但Android会同时捕获这两个,并会触发前两个示例,一个针对click,另一个针对touchstart

当时的修复方法是查看是否支持touchstart,还是回退到click(浏览器)。
好像他们已经更新,您现在可以使用点击。在iPad 1上对此进行了测试,因此旧设备也不应该成为问题。