2010-03-27 102 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。因此xmlDomnull在這條線,你會得到你的錯誤:

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

該行並警告應該是你onreadystatechange回調的最裏面塊內。

相關問題