XmlHttpRequest - 无法加载请求的HTML文件中的JavaScript

时间:2010-12-29 05:21:03

标签: javascript ajax xmlhttprequest

我是JavaScript的初学者,所以如果这是一个菜鸟问题,我很抱歉。我正在尝试使用XmlHttpRequest在被调用的HTML文件中使用JavaScript(例如RSS提要脚本)调用HTML文件(example.html)。调用的HTML文件(example.html)中的任何脚本都不会加载。它会加载被调用的HTML文件中的任何纯文本或超链接。我甚至尝试更改被调用的文件。例如,使用“rssfeeder.js”切换“example.html”以查看它是否按需加载JavaScript,但仍然无效。同样,我是JavaScript的新手,所以请详细说明你的答案。谢谢!这是我正在使用的脚本:

           var receiveReq = getXmlHttpRequestObject();      
           function Example() {
               if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
                   receiveReq.open("GET", 'example.html', true);
                   receiveReq.onreadystatechange = handleExample; 
                   receiveReq.send(null);
               }            
       }
          function handleExample() {
              if (receiveReq.readyState == 4) {
           document.getElementById('span_result').innerHTML = receiveReq.responseText;
               }
          }

1 个答案:

答案 0 :(得分:2)

浏览器不会自动运行XHR结果的结果。如果您知道自己正在获取javascript并希望自动运行,请尝试将其作为脚本元素包含在内:

document.body.appendChild(document.createElement('script')).src="example.js";

如果页面实际上是带有一些javascript函数的html,那么在设置innerHTML后按名称调用该函数。

如果脚本是没有定义任何函数的匿名脚本块,那么您可以尝试执行以下操作:

var myscripts = document.getElementById('span_result').getElementsByTagName('script');
for (var i in myscripts) {
  eval(myscripts[i].innerHTML);
}