Android “如何禁用”;幻灯片“;特定设备的特定链接上的页面转换-defaultPageTransition本身不是';还不够

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) ) { $.

我在使用jQuery Mobile。对于某些链接(但不是所有链接),我在标记中使用了以下页面转换代码:

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团队正在使用这个实现。