使用JavaScript检测对转换的支持

use*_*110 16 javascript css css3 css-transitions

我想提供不同的javascript文件,具体取决于浏览器是否支持CSS3过渡.有没有比我下面的代码更好的方法来检测转换支持?

window.onload = function () {
    var b = document.body.style;
    if(b.MozTransition=='' || b.WebkitTransition=='' || b.OTransition=='' || b.transition=='') {
        alert('supported');
    } else {
        alert('NOT supported')
    }
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 37

我也认为包括Modernizr是一种矫枉过正.以下功能适用于任何功能.

function detectCSSFeature(featurename){
    var feature = false,
    domPrefixes = 'Webkit Moz ms O'.split(' '),
    elm = document.createElement('div'),
    featurenameCapital = null;

    featurename = featurename.toLowerCase();

    if( elm.style[featurename] !== undefined ) { feature = true; } 

    if( feature === false ) {
        featurenameCapital = featurename.charAt(0).toUpperCase() + featurename.substr(1);
        for( var i = 0; i < domPrefixes.length; i++ ) {
            if( elm.style[domPrefixes[i] + featurenameCapital ] !== undefined ) {
              feature = true;
              break;
            }
        }
    }
    return feature; 
}

var hasCssTransitionSupport = detectCSSFeature("transition");
Run Code Online (Sandbox Code Playgroud)

灵感来自https://developer.mozilla.org/en-US/docs/CSS/Tutorials/Using_CSS_animations/Detecting_CSS_animation_support

  • 因为IE将elm.style [featurename]报告为空字符串.我在第一次检查时添加了!== undefined; if(elm.style [featurename]!== undefined){feature = true; 现在它有效. (4认同)

Bla*_*ger 1

Modernizr 将为您检测到这一点。使用此链接 创建仅包含 CSS3 2D 和/或 3D 过渡的自定义下载版本。

运行后,您可以测试标签 (CSS)csstransitions上的类html,或者在 JavaScript 中测试是否Modernizr.csstransitionstrue

更多文档: http: //modernizr.com/docs/#csstransitions

  • 谢谢。但我不想为此添加一个库:) (12认同)
  • 实际上它一点也不小,而且测试如此简单的事情的输出代码比所需的大 50 倍。我永远不会使用现代化器,除非我需要的不仅仅是其中一个测试,即使这样我也会复制测试并清理代码 (9认同)
  • 使用 Modernizr 构建工具可为您提供尽可能最小的 *Modernizr* 代码,而不是整个库。(您特别要求“更好的方法”,而不是尽可能小的代码。Modernizr 是我所知道的最好的方法。) (2认同)