2011-09-02 71 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代码之外,似乎没有可能的解决方案。或者我错过了什么?