我无法让所有这些一起工作。我在 iOS 上使用 fastclick.js 完美运行了 phonegap/JQM。这只是个梦。但出于某种原因,我在 android 上仍然有 300 毫秒的延迟。我放了一些警报,代码正在被调用。真是令人费解。我正在摩托罗拉 droid razor maxx 上进行测试。

在我的 index.html 文件中:

<!DOCTYPE html>
<html>
    <head>
        ...
        <script type='application/javascript' src='js/fastclick.js'></script>
    </head>
    <script>
    $(document).on("pagebeforechange", function (e, data) {
        FastClick.attach(document.body);
        alert('fastclick attached');
        var to_page = data.toPage[0].id;
        // skip showing #myPage if condition is true
        if (to_page == "index") {
            $.mobile.pageContainer.pagecontainer('change', 'event-list.html');
            e.preventDefault();
        }
    });

    </script>
    <body>
        <div id="index" data-role="page">
        This is the index page.
        </div>
    </body>
</html>

但它似乎不起作用。我也试过像这样附加它:
window.addEventListener('load', function() {
    new FastClick(document.body);
}, false);

两者都适用于 iOS,但似乎对 android 没有任何影响。有什么建议么?

编辑:如果我删除 JQuery 库,它似乎工作正常。一定有什么地方发生了冲突。知道它可能是什么吗?我正在使用 JQM 1.4。

编辑:我也试过使用 vclick 无济于事
$("#test-element").bind('vclick',function() {
    $.mobile.pageContainer.pagecontainer('change', 'description.html?lunch_pk=2133',{
        transition: "slide",
    });
});
...
<h1 id='test-element'> CLICK HERE FOR TEST </h1>

我还使用手势来更改也被延迟 300 毫秒的页面,所以我认为即使 vclick 正常工作,它也不会是一个完整的解决方案。

编辑:好的,经过一些进一步的测试,我很确定延迟来自 JQM 页面更改函数内部。我在 vclick 中做了一个 console.log 并且当点击按钮时我的日志非常敏感。我正在尝试通过 JQM 进行挖掘,但不是很成功,我的意思是为什么它在 iOS 上是无痕的,而在 android 上不起作用?也许我只需要找到一个更好的移动图书馆。

回答

我一直无法解决这个问题。我的解决方案是切换库。我去了英特尔的移动应用程序框架,它能够更成功地完成我使用 JQM 所做的一切。

最佳答案

您可以尝试 vclick 而无需尝试 onclicks。这些内置的 jQuery Mobile vclick 省略了 300 毫秒的延迟。我通过这样做来做到这一点。

$("#element").bind('vclick',function(event) {
   yourFunction(this.id);
   event.preventDefault();// this prevents the default click event
});

10-07 19:29
查看更多