2013-08-01 3 views
3

Я хочу, чтобы проверить, поддерживает ли браузер .textContentЛучший способ проверить, поддерживает ли браузер `.textContent`?

Я думал, эти варианты:

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

Конечно, первый один проще, но проблема Я вижу, что, возможно, браузер вычисляет всю строку, которая может быть медленной, если сайт огромен.

Затем, какой из них выбрать? Или есть лучший вариант?

Edit: Я создал jsperf

ответ

6

С ...

'textContent' in document.body 

... выражение вы просто проверить свойство (TextContent) существование в document.body объекта, без фактического контроля его значение.

И да, это false в IE8.

+0

Интересно ... Я думал, что 'в' может быть использован только в петлях' для ... в' – 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. Чуть медленнее, чем 'in' для IE10. – Mottie

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> 
Смежные вопросы