2012-12-31 63 views
17

我知道互联网上有很多这些问题,但我已经尝试了所有的解决方案(所有this question的答案),而且都没有工作。PhoneGap + jQuery Mobile =慢点击响应时间

当我在我的PC浏览器中运行该网站时,一切都很好,但只要我在电话上部署,响应时间非常缓慢。

我试过使用FastClick,将hoverDelay设置为0,并绑定我自己的事件,但结果是一样的。

正在使用Android 4.1。希望除了我所尝试过的任何帮助。

+0

作为参考,这里是一个很好的JQM性能优化列表:http://blog.safaribooksonline.com/2012/07/20/jquery-mobile-performance-improvement/ – Hope4You

回答

24

要加快JQM,您必须关闭任何转换。

它很糟糕,但JQM转换对移动设备来说太慢了,即使在iOS上也是如此。我们只能等待几年,直到硬件变得更快,我怀疑。尽管JQM团队试图在1.2中提高性能,如果没有我的应用程序感觉呆滞,我仍然无法使用转换。

我总是使用这些设置来获得jQuery手机的最佳性能。

$.mobile.defaultPageTransition = 'none' 
$.mobile.defaultDialogTransition = 'none' 
$.mobile.buttonMarkup.hoverDelay = 0 

同样,如果你正在写任何JavaScript,绑定到任何“点击”事件。移动设备上的点击速度太慢,因为它在事件触发之前有300毫秒的延迟。

由于您使用的是JQM,因此您可以使用自己的单击事件vclick代替(该引擎正在使用touchstarttouchend事件)。

如果在此之后它仍然非常慢,您可能需要检查点击事件中实际发生的情况 - 可能您的代码没有尽可能优化。

+0

转换与实际启动之前发生的事情有什么关系?由于转换本身在我的手机上完美无缺地工作,所以在转换开始之前的延迟*使我感到不安。除此之外,我还没有任何JS,除了一个自定义的加载屏幕,一旦加载Cordova和JQM就会执行'changePage',这就是它。我会尝试禁用转换并回来反馈。谢谢! –

+1

不,很抱歉,没有任何变化,仍然是滞后。我甚至尝试改变JQM核心以用0代替hoverDelay,但仍然没有任何结果。 –

+1

@EduardLuca在这一点上,我会说你需要弄清楚,如果它是你的页面中导致缓慢的内容。有时如果DOM在JQM应用程序中变得太大,它可能会显得很慢。你的网页看起来是什么样的,哪一点需要时间太长? – asgeo1

1

这段代码为我工作

var ua = navigator.userAgent, 
event = (ua.match(/iPad|Android/i)) ? "touchstart" : "click"; 

$("button,a").bind(event, function() 
{ 
    $(this).trigger('click'); 
});