有没有执行所有测试Modernizr的一次全部的方法吗?

问题描述 投票:5回答:3

我是新来的Modernizr的,我只是在寻找一种简单的方法来检查整个浏览器的兼容性。我已经产生了Modernizr的脚本来测试只是我的web应用程序,这是高度依赖于HTML5,CSS3和JavaScript的现代方法的最重要组成部分。有没有一种方法能够同时运行所有这些测试?展望文件过来,我看到很多的方法来测试每个功能一个接一个,但我没有看到一个办法做到这一点的一次。我希望做这样的事情:

伪代码

if (Modernizr.testAll()) {
  // Load site
} else {
  // Redirect to compatibility page
}
javascript cross-browser compatibility modernizr
3个回答
6
投票

事实证明,所有的测试都存储为直接在Modernizr对象布尔值,所以如果你建立了很多功能的相关性的应用程序,你想在一次测试他们的所有,使用:

var supported = true;
for (var feature in Modernizr) {
  if (typeof Modernizr[feature] === "boolean" && Modernizr[feature] == false) {
    supported = false;
    break;
  }
}

0
投票

我一直在寻找同样的事情,我想出了下面的代码:

for (var feature in Modernizr) 
{
    if (typeof Modernizr[feature] === "boolean")
    {
        console.log("Modernizr_" + feature + ": " +Modernizr[feature]);

        for (var subFeature in Modernizr[feature])
        {
            if (typeof Modernizr[feature][subFeature] === "boolean")
            {
                console.log("Modernizr_" + feature + "_"+ subFeature + ": " + Modernizr[feature]);          
            }
        }
    }


}

HTH!


0
投票

在一个线条,我和所有工作的更清洁的方式

Object.values(Modernizr).indexOf(false) === -1


0
投票

我个人挣扎了很多与此有关。但是,终于发现在这一天结束的答案。您可以在下面使用我的代码,它会显示完整列表Modernizr的特点和它们的值:

<script type="text/javascript">

    $(document).ready(function () {});
</script>

<script type="text/javascript">
    $(function () {
        function ListAllMOdernizrFeatures() {


            var TotalString = "Modernizr features<br><br>";
            var arrModernizrFeatures = new Array();


            for (var feature in Modernizr) {

                if (typeof Modernizr[feature] === "boolean") {
                    console.log("Modernizr_" + feature + ": " + Modernizr[feature]);
                    arrModernizrFeatures.push("Modernizr." + feature + ": " + Modernizr[feature])

                    for (var subFeature in Modernizr[feature]) {
                        var ModernizrFeature = Modernizr[feature];
                        if (typeof ModernizrFeature[subFeature] === "boolean") {
                            arrModernizrFeatures.push("Modernizr." + feature + subFeature + ": " + ModernizrFeature[subFeature]);
                        }

                    }
                }

            }

            arrModernizrFeatures.sort(); // in lexicographical order

            for (var PropertyIterator = 0; PropertyIterator < arrModernizrFeatures.length; PropertyIterator++) {
                TotalString += PropertyIterator + 1 + ". " + arrModernizrFeatures[PropertyIterator] + "<br>";
            };
            document.getElementById("ListFeatures").innerHTML = TotalString;
        }

        setTimeout(ListAllMOdernizrFeatures, 100);

    });

</script>

0
投票

用现代的JavaScript(ECMAScript的2017年),你可以利用像这样的Object.values方法:

if (Object.values(Modernizr).indexOf(false) !== -1) {
    console.log('Update your browser (and avoid IE/Edge 😜)')
}

Object.values将提取所有从Modernizr测试结果到一个数组,然后将indexOf(false)测试以查看是否有任何数组项都是假的(即测试失败)。

© www.soinside.com 2019 - 2024. All rights reserved.