Chrome扩展程序:无法调用null的方法'getElementsByTagName'

时间:2010-03-27 10:57:33

标签: google-chrome

我是chrome扩展的初学者。有一个简单的问题。 我的扩展中有代码,但它不起作用。我不知道如何解决它。 在我的扩展中,我使用了一个xml文件来stroe一些数据。有 我的background.html中的代码,但它不起作用

    <!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“...... 谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

loadXmlFile的返回值初始化为null且仅设置为onreadystatechange回调中的某些内容,因此在函数返回时它可能仍为null 。因此xmlDom在此行中null,您收到错误:

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

该行和警报应位于onreadystatechange回调的最里面的块中。