我要检查浏览器是否支持.textContent
检查浏览器是否支持`.textContent`的最佳方法?
我还以为这些选项:
if(document.body.textContent) { }
if(document.createElement('div').textContent !== void(0)) { }
当然,第一个是简单的,但问题我看到的是,也许浏览器计算所有的字符串,如果网站很大,可能会很慢。
那么,我应该选择哪一个?还是有更好的选择?
编辑:我创建了一个jsperf
我要检查浏览器是否支持.textContent
检查浏览器是否支持`.textContent`的最佳方法?
我还以为这些选项:
if(document.body.textContent) { }
if(document.createElement('div').textContent !== void(0)) { }
当然,第一个是简单的,但问题我看到的是,也许浏览器计算所有的字符串,如果网站很大,可能会很慢。
那么,我应该选择哪一个?还是有更好的选择?
编辑:我创建了一个jsperf
与...
'textContent' in document.body
...表达你只检查属性(的textContent)存在于document.body
对象,而无需实际检查它的价值。
是的,在IE8中是false
。
使用第二个选项。效率更高。我刚刚做了测试。
注意:原始测试。速度: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>
有趣......我认为'in'只能在循环使用'对... in' – Oriol
根据http://jsperf.com/checking-textcontent-browser-support,这是最快的选项(支持'.textContent'的浏览器) – Oriol
@Oriol [更新jsperf](http://jsperf.com/checking-textcontent-browser-support/2)使用'document.body.hasOwnProperty(' textContent')'表明它在Firefox和Chrome中速度最快。 IE10的速度比'in'稍慢。 – Mottie