我正在测试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>
它仍然没有真正继续默认操作。提交者不会提交,在这种特殊情况下,锚不起作用。如果我在提示后非常快,有时它会工作。
答案 0 :(得分:0)
<强> TL; DR:强>
不要将touchstart
用作事件,只需使用click
。
更长的回答:
“回到过去”iOS不支持click
事件,而是touchstart
和touchstop
。
我尝试使用.on('click touchstart')
解决此问题,但Android会同时捕获这两个,并会触发前两个示例,一个针对click
,另一个针对touchstart
。
当时的修复方法是查看是否支持touchstart
,还是回退到click
(浏览器)。
好像他们已经更新,您现在可以使用点击。在iPad 1上对此进行了测试,因此旧设备也不应该成为问题。