我正在使用 jQuery Mobile。对于某些链接 - 但不是全部,我在标记中使用以下页面转换代码:
data-transition="slide"
这运行良好,但我想禁用 Android 设备中的幻灯片动画,同时仍然允许 iOS 等设备中的幻灯片动画...
我知道我可以使用如下代码来定位 Android:
$(document).bind("mobileinit", function() {
if (/Android/i.test(navigator.userAgent) ) {
$.mobile.defaultPageTransition = "none";
}
});
虽然这确实删除了默认过渡,但我的幻灯片过渡不是默认的,而是我在标记中专门指定的。
有谁知道如何在特定设备中禁用/覆盖这样的特定幻灯片转换?
谢谢!
最佳答案
完美的解决方案并不存在,因为 jQM 开发人员没有实现完美的转换关闭解决方案。
仍然可以这样做:
解决方案1
$(document).bind("mobileinit", function() {
if (/Android/i.test(navigator.userAgent) ) {
$.mobile.ajaxEnabled = false;
}
});
这将阻止使用 ajax 加载页面,从而阻止页面转换。当然,如果您仍然需要使用 ajax 加载页面,那么这是一个床解决方案。
解决方案2
这个解决方案会容易得多。我正在使用 jQuery Mobile 1.3.1。为此,相信我,这很重要。基本上,您需要手动更改 jQuery Mobile js 文件,因此请使用未压缩的文件。
转到第 3788 行,您将看到这个函数:
// If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified
$.mobile._maybeDegradeTransition = function( transition ) {
if ( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ) {
transition = $.mobile.transitionFallbacks[ transition ];
}
return transition;
};
更改它,使其看起来像这样:
// If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified
$.mobile._maybeDegradeTransition = function( transition ) {
if (/Android/i.test(navigator.userAgent) || (!/Android/i.test(navigator.userAgent) && transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] )) {
transition = 'none';
}
return transition;
};
您可以在这里测试:http://www.fajrunt.org/transition-test/
如果您使用的是较旧的 jQM 版本,请告诉我哪个版本,我将为您进行修改。您还可以从我的示例中下载修改后的 jQM js 文件。不要忘记再次压缩它。
关于android - 如何禁用某些设备的某些链接上的 "Slide"页面转换? -defaultPageTransition 单独是不够的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16696561/