3

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

我想过这些选择:

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

当然,第一个更简单,但我看到的问题是浏览器可能会计算所有字符串,如果网站很大,这可能会很慢。

那么,我应该选择哪一个呢?还是有更好的选择?

编辑:我创建了一个jsperf

4

2 回答 2

6

和...

'textContent' in document.body

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

是的,它false在 IE8 中。

于 2013-08-01T23:28:20.967 回答
1

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

注意:原始测试。速度:355 毫秒对 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>
于 2013-08-02T03:14:10.817 回答