我使用phonegap和jquerymobile / jquery开发了一个应用程序。 在开发过程中我只有一个虚拟的iOS设备,现在因为我在一个真实的设备上测试应用程序,我看到,点击一个元素和处理这个事件之间的时间很长。 例如,如果我单击一个图标,则会显示一个加载器图标,但此图标首先出现在下一页最终加载的时刻(显示加载程序的时间非常短)。
我使用Javascript开发很长一段时间并始终专注于高性能执行,但这很奇怪。
App在一个HTML文件中有大约10个视图。点击一个元素只显示这些文件的下一部分。
有没有人知道解决这些“错误”的解决方案?
提前致谢。
答案 0 :(得分:3)
iPhone上的点击延迟是用于区分点击和滚动的功能。当您绑定到click
事件时,iOS会等待大约300毫秒来决定您是单击对象还是尝试滚动页面。
你可以使用jQuery Mobile的vclick
事件,它的触发速度要快得多,但是你可能会遇到连续两次触发vclick
事件的情况,这可能导致点击多个元素。以下是一些示例代码,说明如何使用vclick
事件并仅捕获首先触发的事件:
$(function () {
//setup a function to check if a vclick event has fired within the last 500ms
function check_vclick () {
//if a vclick event has fired in the last 500ms then return false
if (do_vclick == false) return false;
//otherwise set a flag to disallow vclicks for 500ms
do_vclick = false;
//setup a timeout to allow vclicks in 500ms
setTimeout(function () {
do_vclick = true;
}, 500);
//return true so the event handler knows it's ok to run its code
return true;
}
//setup a flag to allow/disallow vclick events from firing
var do_vclick = true;
//bind an event handler to the vclick event for an element
$('#link_id').bind('vclick', function () {
if (check_vclick()) {
//run the code associated with the element, if it's a link referencing a pseudo-page on the same HTML document, you can do something like this
$.mobile.changePage($(this.href));
}
});
});
以下是指向$.mobile.changePage()
的文档的链接:http://jquerymobile.com/demos/1.0rc2/docs/api/methods.html
以下是vclick
文档的链接(请注意虚拟鼠标事件部分下的注释):http://jquerymobile.com/demos/1.0rc2/docs/api/events.html