2011-09-02 68 views
1

根據jquerymobile page transitions docs只在最後一個版本的android中支持翻轉效果,如何製作以下按鈕:如何根據Android版本更改過渡效果?

<a href="#ngame" data-role="button" data-transition="flip" data-rel="dialog">New game</a>

僅在android 2.3.4+中使用'翻轉'效果和'淡化'對先前版本的影響?

如果有幫助我在我的項目中使用phonegap。

謝謝!

回答

2

第一步是從phonegap API(http://docs.phonegap.com/phonegap_device_device.md.html#device.version)獲取設備的版本。

第二步是分析此爲整數或浮點數,並用它來決定是否不改變DOM:

var android_version = parseFloat(device.version); 
if (android_version < 2.3) { 
    $.each($('[data-transition="flip"]'), function (index, value) { 
     $(value).attr('data-transition', 'fade'); 
    }); 
} 

你會希望deviceready事件觸發爲後運行此變量在此之前將不會準備好。此外,翻轉效果將在較早版本的Android OS上起作用,它看起來很笨重,因爲它只是旋轉頁面而不是三維翻轉而不是三維翻轉。

- >注意:您也可以通過檢查navigator.userAgent字符串來獲取Web應用程序中的Android OS版本號。我發現下面的正則表達式從另一個問題#1:Get Android OS version from user-agent

[;(\s]Android (\d+(?:\.\d+)+)[;)]navigator.userAgent字符串匹配給我下面的輸出:

Android 2.3.3;,2.3.3 
+0

謝謝你這麼好的答案! – Nelson

0

我想知道如果碧玉或尼爾森真的試圖賈斯帕的解決方案。今天我有同樣的問題,我仍然有它,因爲我碰到這個根本問題:

  1. 只能設置數據過渡動態屬性在mobileinit事件,因爲(因爲它似乎)一次jQueryMobile已將所有頁面拼湊起來,您可以更改所需的所有數據轉換屬性,但不會產生任何影響。

  2. 設置屬性只有在所有元素都被加載後纔有意義,因此您需要使用$(document).ready()綁定,但是此事件在mobileinit之後觸發。

因此,在這兩個問題到位的情況下,除了入侵jQueryMobile代碼之外,似乎沒有可能的解決方案。或者我錯過了什麼?