我无法让所有这些一起工作。我有 phonegap/JQM 在 iOS 上完美地运行 fastclick.js。这只是个梦。但出于某种原因,我在 android 上仍然有 300 毫秒的延迟。我放入了一些警报并且正在调用代码。真是莫名其妙。我正在摩托罗拉机器人 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 上工作?也许我只需要找到一个更好的移动图书馆。
回答
我一直没能解决这个问题。我的解决方案是切换库。我使用了 Intel 的移动应用程序框架,它能够完成我使用 JQM 所做的一切,而且更加成功。
最佳答案
您可以尝试 vclick
而无需尝试 onclicks。这些内置的 jQuery Mobile vclick
省略了 300 毫秒的延迟。我通过这样做来做到这一点。
$("#element").bind('vclick',function(event) {
yourFunction(this.id);
event.preventDefault();// this prevents the default click event
});
关于android - fastclick.js JQuery Mobile Phonegap 和 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21870922/