2013-08-01 107 views
3

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

我还以为这些选项:

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

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

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

编辑:我创建了一个jsperf

回答

6

与...

'textContent' in document.body 

...表达你只检查属性(的textContent)存在于document.body对象,而无需实际检查它的价值。

是的,在IE8中是false

+0

有趣......我认为'in'只能在循环使用'对... in' – Oriol

+0

根据http://jsperf.com/checking-textcontent-browser-support,这是最快的选项(支持'.textContent'的浏览器) – Oriol

+2

@Oriol [更新jsperf](http://jsperf.com/checking-textcontent-browser-support/2)使用'document.body.hasOwnProperty(' textContent')'表明它在Firefox和Chrome中速度最快。 IE10的速度比'in'稍慢。 – Mottie

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> 
相关问题