从Internet Explorer中的AJAX响应中删除了SCRIPT标记

时间:2011-12-08 11:18:04

标签: javascript ajax internet-explorer innerhtml script-tag

在我们当前的项目中,一些代码与AJAX一起返回,我们使用innerHTML将此代码放在DIV中。

现在我们在这个DIV中搜索所有可用的脚本标签,并在EVAL()中搜索这些脚本标签的内容(将一些信息添加到全局数组等)

scriptTags = responseElement.getElementsByTagName("script");

for (i = 0; i < scriptTags.length; i++) {
            eval(scriptTags[i].text);
        }

这在Firefox和Chrome中非常完美。但在IE中,scriptTags似乎是空的。经过进一步调查,似乎responseElement的innerHTML不包含任何SCRIPT标签(而在Firefox / Chrome中它们就在那里!)

任何人都知道原因和/或解决方法吗?

顺便说一句,这就是我在页面上放置AJAX响应的方式:

this.proxy.innerHTML = o.responseText;
scriptTags = this.proxy.getElementsByTagName("script");

调试o.responseText显示响应中的SCRIPT标记。导航到页面上的this.proxy元素会在IE中显示 SCRIPT标记,但会显示在Firefox / Chrome中。

1 个答案:

答案 0 :(得分:1)

通过在de AJAX响应中的SCRIPT标记之前添加一个额外的节点元素来解决该问题。 (解决方案/原因:http://allofetechnical.wordpress.com/2010/05/21/ies-innerhtml-method-with-script-and-style-tags/

将来我们应该更改我们的应用程序,以便将HTML作为JSON发回。