Hammer.js阻止Android Webview中的超链接点击

时间:2016-05-17 07:18:08

标签: javascript android webview android-webview hammer.js

这是一个在桌面浏览器中不会发生的Hammer.js问题。我已在使用WebView的WIP Android应用中验证了这一点

编辑:我也证实了这种情况发生在"互联网" Android附带的浏览器(不是Chrome)(4.4.2如果有帮助的话)。

给出以下代码:

<!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用来决定是否接受&#34; tap&#34;的某种超时。

删除&#34; var hammerobj ...&#34;因此它只是HTML(没有Javascript)显然使链接在所有设备上始终正常工作。这是一个Hammer.js问题。

我的问题是:

是否有人知道如何修复上述代码以允许所有链接点击,表单提交等每次都触发,同时仍允许我使用Hammer.js进行平移,滑动等?

谢谢!

1 个答案:

答案 0 :(得分:1)

我自己设法解决了这个问题。显然我的代码中的一个错误导致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>

希望它有所帮助!