I want to check if the browser supports .textContent

I have thought these options:

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

Of course, the first one is simpler, but the problem I see is that maybe the browser calculates all the string, which can be slow if the website is huge.

Then, which one should I choose? Or is there a better option?

Edit: I have created a jsperf

有帮助吗?

解决方案

With...

'textContent' in document.body

... expression you'll just check a property (textContent) existence in document.body object, without actually checking its value.

And yes, it is false in IE8.

其他提示

Use 2nd option. Far more efficient. I've just done the test.

Note: Raw Test. Speed: 355 ms vs 6 ms.

<!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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top