我想检查浏览器是否支持.textContent
我想过这些选择:
if( document.body.textContent ) { }
if( document.createElement('div').textContent !== void(0) ) { }
当然,第一个更简单,但我看到的问题是,浏览器可能会计算所有字符串,如果网站很大,这可能会很慢。
然后,我应该选择哪一个?或者有更好的选择吗?
修改:我创建了jsperf
答案 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>