android - 如何禁用某些设备的某些链接上的 "Slide"页面转换? -defaultPageTransition 单独是不够的

标签 android jquery jquery-mobile

我正在使用 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/

相关文章:

java - 如何从另一个线程使 View 无效?

android - 在支持操作栏中获取对抽屉切换的引用

android - 在 Android Studio 项目上找不到参数的方法 test()

url - 如何关闭 angularjs 中的历史记录处理?

jquery-mobile - jQuery Mobile - 绑定(bind)到 pageinit 事件

java - 无法启动新项目eclipse

javascript - 我在我的网站中添加了在线 JavaScript。如何更改由该 JavaScript 添加的网页中的 HTML?

javascript - 控制拖动事件移动到特定的div

jquery - 如何将 Bootstrap 工具提示置于 SVG 的中心

css - 用于移动网络应用程序的 HTML 和 CSS 锁屏