2010-03-27 2 views
0

Я начинаю с расширением chrome. Существует простая проблема. В моем расширении есть код, но он не работает. Я не знаю, как это понять. В моем расширении, я использовал XML файл Stroe некоторый data.There является кода в моем background.html, но это не работаетРасширение Chrome: невозможно вызвать метод getElementsByTagName из нуля

<!DOCTYPE html> 
<html> 
<head> 
</head> 

<body> 
<script> 
function loadXmlFile(){ 
    var xmlDom = null; 
    var xmlhttp = new XMLHttpRequest(); 
     if(xmlhttp){ 
       xmlhttp.onreadystatechange = function(){ 
         if(xmlhttp.readyState == 4){ 
          if(xmlhttp.status == 200){ 
             xmlDom = xmlhttp.responseXML; 
           } 
         } 
       } 
       xmlhttp.open("GET",chrome.extension.getURL("/xml/123.xml"),true); 
       xmlhttp.send(null); 
     } 
     return xmlDom; 
} 

var xmlDom = loadXmlFile(); 
var s = xmlDom.getElementsByTagName("to"); 
alert(s[0].nodeType); 
</script> 
</body> 
</html> 

Я использовал инструменты разработчика для отладки, но он говорит, что "не может метод вызова 'getElementsByTagName' из null "... кто может мне помочь?

ответ

0

Возвращаемое значение loadXmlFile инициализируется null и установить только на что-то в onreadystatechange обратного вызова, так что в то время, когда функция возвращает его, вероятно, еще null. Поэтому xmlDom является null на эту линии, где вы получаете вашу ошибку:

var s = xmlDom.getElementsByTagName("to"); 

этой линии и предупреждение должно быть в пределах внутреннего блока вашего onreadystatechange обратного вызова.

Смежные вопросы