Android “如何禁用”;幻灯片“;特定设备的特定链接上的页面转换-defaultPageTransition本身不是';还不够
我在使用jQuery Mobile。对于某些链接(但不是所有链接),我在标记中使用了以下页面转换代码:Android “如何禁用”;幻灯片“;特定设备的特定链接上的页面转换-defaultPageTransition本身不是';还不够,android,jquery,jquery-mobile,Android,Jquery,Jquery Mobile,我在使用jQuery Mobile。对于某些链接(但不是所有链接),我在标记中使用了以下页面转换代码: data-transition="slide" 这是工作得很好,但我想禁用Android设备中的幻灯片动画,同时仍然允许在iOS等幻灯片动画 我知道我可以用如下代码瞄准Android: $(document).bind("mobileinit", function() { if (/Android/i.test(navigator.userAgent) ) { $.
data-transition="slide"
这是工作得很好,但我想禁用Android设备中的幻灯片动画,同时仍然允许在iOS等幻灯片动画
我知道我可以用如下代码瞄准Android:
$(document).bind("mobileinit", function() {
if (/Android/i.test(navigator.userAgent) ) {
$.mobile.defaultPageTransition = "none";
}
});
虽然这确实删除了默认转换,但我的幻灯片转换不是默认转换,而是我在标记中特别指定的转换
有人知道如何在特定设备中禁用/覆盖这样的特定幻灯片转换吗
谢谢 完美解决方案不存在,因为jQM开发人员没有实现完美的转换关闭解决方案 仍然可以这样做:
// 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;
};
解决方案1
这将防止使用ajax加载页面,从而防止页面转换。当然,如果您仍然需要使用ajax加载页面,那么这是一个bed解决方案
解决方案2
这个解决方案会容易得多。我正在使用jquerymobile1.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;
};
您可以在此处进行测试:
如果您使用的是较旧的jQM版本,请告诉我是哪个版本,我将为您修改它。您还可以从我的示例中下载修改过的jqmjs文件。别忘了再次压缩它。我相信在1.3.0中也可以实现同样的效果,比如:
$(document).bind("mobileinit", function() {
if (/Android 2.2/i.test(navigator.userAgent) ) {
console.log("Android 2.2 detected - changing default transition fallback behaviour to 'none'");
//$.mobile.defaultPageTransition = "none";
$.mobile.transitionFallbacks.slidefade="none";
$.mobile.transitionFallbacks.flip = "none";
$.mobile.transitionFallbacks.flow = "none";
$.mobile.transitionFallbacks.pop = "none";
$.mobile.transitionFallbacks.slide = "none";
$.mobile.transitionFallbacks.slidedown = "none";
$.mobile.transitionFallbacks.slidefade = "none";
$.mobile.transitionFallbacks.slideup = "none";
$.mobile.transitionFallbacks.turn = "none";
}
});
看起来有很多不同的方法可以“缩小”或“压缩”javascript—您能为jQuery Mobile推荐一种好方法吗?据我所知,jQuery团队正在使用这个实现。