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

标签 javascript android webview android-webview hammer.js

这是 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/

相关文章:

android - Eclipse 无法处理两个 main.xml

javascript - 如何对 webview 的内容执行 querySelector

android - GCC 6 移位溢出错误,

android - 创建系统应用程序

objective-c - 使用 Cocoa 打印本地 HTML

ios - 如何知道 UIwebview 是向下滚动还是向上滚动? ( swift )

javascript - 如何使用 jQuery 获取前一个元素到另一个元素?

javascript - d3 v4 geo 绘制边界反转

javascript - 在 Sequelize 中将模型的条件与其关联的条件相结合

javascript - Google map 路线 API 重定向到 map.google.com