2012-12-31 65 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'); 
});