在我们当前的项目中,一些代码与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中。
答案 0 :(得分:1)
通过在de AJAX响应中的SCRIPT标记之前添加一个额外的节点元素来解决该问题。 (解决方案/原因:http://allofetechnical.wordpress.com/2010/05/21/ies-innerhtml-method-with-script-and-style-tags/)
将来我们应该更改我们的应用程序,以便将HTML作为JSON发回。