检查浏览器是否支持`.textContent`的最佳方法?

时间:2013-08-01 23:22:50

标签: javascript performance dom browser-feature-detection

我想检查浏览器是否支持.textContent

我想过这些选择:

  1. if( document.body.textContent ) { }
  2. if( document.createElement('div').textContent !== void(0) ) { }
  3. 当然,第一个更简单,但我看到的问题是,浏览器可能会计算所有字符串,如果网站很大,这可能会很慢。

    然后,我应该选择哪一个?或者有更好的选择吗?

    修改:我创建了jsperf

2 个答案:

答案 0 :(得分:6)

使用...

'textContent' in document.body

...表达式您只需检查document.body对象中的属性(textContent)是否存在,而不实际检查其值。

是的,它在IE8中是false

答案 1 :(得分:1)

使用第二个选项。效率更高。我刚刚完成了测试。

注意:原始测试。速度:355毫秒vs 6毫秒。

<!DOCTYPE html>
<html>
    <body>
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    varasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs

    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsgasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsasdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjs
    asdajfhaskjaskngakjgnaskjgnaskgjasngkajsngakjsg

        <script>
        var d0 = new Date();var n0 = d0.getTime();  
        for(var i = 0 ; i < 10000 ; i++){

        if( document.body.textContent ) { }


        }var d1 = new Date();   var n1 = d1.getTime();  console.log(n1-n0);


        var array0 =[];
        var d0 = new Date(); var n0 = d0.getTime(); 
        for(var i = 0 ; i < 10000; i++){

        if( document.createElement('div').textContent !== void(0) ) { }



        }var d1 = new Date();   var n1 = d1.getTime();  console.log(n1-n0); 

        </script>



    </body>
</html>