我无法让所有这些一起工作。我在 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
});