首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fastclick.js JQuery手机和安卓系统

fastclick.js JQuery手机和安卓系统
EN

Stack Overflow用户
提问于 2014-02-19 12:17:04
回答 6查看 5.5K关注 0票数 4

我不能让所有这些都在一起工作。我让phonegap/JQM在iOS上完美地与fastclick.js一起运行。这只是个梦。但由于某些原因,我在android上仍然得到了300ms的延迟。我放了一些警报,代码正在被调用。这真的很令人费解。我正在测试摩托罗拉的droid剃须刀maxx。

在index.html文件中:

代码语言:javascript
复制
<!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>

但它似乎不起作用。我还尝试像这样附加它:

代码语言:javascript
复制
window.addEventListener('load', function() {
    new FastClick(document.body);
}, false);

这两种方法都适用于iOS,但似乎对安卓没有任何影响。有什么建议吗?

编辑:似乎如果我删除JQuery库,它会工作得很好。一定会有冲突的。你知道这可能是什么吗?我使用的是JQM 1.4。

编辑:我也尝试过使用vclick,但没有效果

代码语言:javascript
复制
$("#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>

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

编辑:好的,经过一些进一步的测试,我非常确定延迟来自JQM pagechange函数内部。我在vclick里面做了一个console.log,当我点击按钮时,日志响应很快。我正在努力挖掘JQM,但并不是很成功,我的意思是为什么它在iOS上看起来很完美,而在安卓上却不起作用?也许我只需要找到一个更好的移动图书馆。

回答

我从来没有解决过这个问题。我的解决方案是换个库。我使用了英特尔的移动应用框架,它能够更成功地完成我使用JQM所做的所有事情。

EN

回答 6

Stack Overflow用户

发布于 2014-02-28 21:51:56

您可以尝试vclick,而无需尝试单击。这些内置的jQuery移动vclick省略了300ms的延迟。我通过这样做来做到这一点。

代码语言:javascript
复制
$("#element").bind('vclick',function(event) {
   yourFunction(this.id);
   event.preventDefault();// this prevents the default click event
});
票数 1
EN

Stack Overflow用户

发布于 2014-02-28 16:57:43

您尝试过打开jQueryMobile库文件吗?有一些函数,如:

代码语言:javascript
复制
setTimeout(function() {
    $link.removeClass( $.mobile.activeBtnClass );
    }, 300 );

我确信,在这个文件中搜索"delay“或"timeout”并更改它会得到一个很好的结果。上面的行来自

代码语言:javascript
复制
.mobile.popup.handleLink = function( $link ) {
    ...
}
票数 0
EN

Stack Overflow用户

发布于 2014-03-02 21:29:34

尝试在deviceready事件处理程序中注册FastClick:

代码语言:javascript
复制
document.addEventListener('deviceready', function() {
    FastClick.attach(document.body);
}, false);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21870922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档