这是 Hammer.js 问题,在桌面浏览器中不会发生。我已经在使用 WebView 的 WIP Android 应用程序中验证了这一点
编辑:我还验证了这种情况发生在Android(4.4.2,如果有帮助的话)附带的“互联网”浏览器(不是Chrome)上。
<小时/>给出以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<title>Test</title>
<script type="text/javascript" language="Javascript" src="jquery-1.11.3.min.js"></script>
<script type="text/javascript" language="Javascript" src="hammer.js"></script>
<style type="text/css">
#wrap { position:fixed; top:0px; bottom:0px; left:0px; right:0px; background:#00f; color:#fff; font-size:24px; text-align:center; }
#wrap a, #wrap a:visited { color:#fff; }
</style>
</head>
<body>
<div id="wrap">
<a href="http://www.stackoverflow.com/">Stack Overflow</a>
</div>
<script type="text/javascript" language="Javascript">
var hammerobj = new Hammer ($('#wrap')[0]);
</script>
</body>
</html>
当我尝试单击应用程序中的链接时,有时会转到该链接,有时则不会。这看起来完全是随机的,但 Hammer.js 可能会使用某种超时来确定是否接受“点击”。
删除“varhammerobj...”行,使其只是 HTML(无 JavaScript),显然可以使链接在所有设备上始终正常工作。这是 Hammer.js 问题。
我的问题是:
有谁知道如何修复上述代码,以允许所有链接点击、表单提交等每次都触发,同时仍然允许我使用 Hammer.js 进行平移、滑动等?
谢谢!
最佳答案
我自己已经成功解决了这个问题。显然,我的代码中的一个错误导致 300 毫秒的点击延迟持续存在,并阻止了多次点击。
如果有人正在阅读并且感到好奇,设备上存在 300 毫秒的点击延迟,因此浏览器可以确定您是否在双击。有几个 Javascript 库可用于删除它。我个人使用 https://github.com/ftlabs/fastclick 中的 FastClick .
<script type="text/javascript" language="Javascript" src="fastclick.js"></script>
<script type="text/javascript" language="Javascript">
FastClick.attach (document.body);
</script>
希望它能帮助别人!
关于javascript - Hammer.js 阻止 Android Webview 中的超链接点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37269550/