我在IE 11中遇到一个奇怪的问题,同时开发通过xml与后端服务对话的自定义应用程序。
奇怪的是,firefox和chrome都可以解析我收到的响应,但IE失败了,我完全迷失了......
如果有人可以看看,我会非常感激。
我会发布来自服务器的示例响应,xml doc的cuted版本,但你会明白这个想法
<root>
<wizardhead>
<inputparametar/>
<outputparametar>69439</outputparametar>
<iserror/>
<repeaterror/>
<errormessage/>
<actionstorename>dbo.ncspWizardExec</actionstorename>
<wizardname>459570</wizardname>
</wizardhead>
</root>
解析xml以提取特定用途值的代码的和平在这里:
window.ro = ro; // var ro is the source XML as string (saving to global var just for ease of testing)
var fnd = document.getElementsByTagName.bind( ro ); // bind 'gebtn' on ro document
var hdd = fnd('wizardhead')[0] ; // reference wizardhead WORKS
var hd2 = hdd.getElementsByTagName('outputparametar')[0].innerHTML; // this FAILS!
我在开发人员工具(F12)中看到的错误在线,我需要比较 hd2 值:
喜欢这个=&gt; ......(1 == hd2.toString())
无法获取未定义或空引用的属性'toString'
devtools中的手表面板显示当前的env vars就像..
hdd =&gt; [对象元素]
hd2 =&gt;未定义
谢谢,oserk
答案 0 :(得分:1)
好的家伙,一天后结束......我找到了解决问题的方法!
希望能帮助有类似问题的人:)
在此阅读w3c文档:w3c docs我发现我可以通过两种方式引用元素。
element = collection.item(index)
element = collection[index]
因此我将其应用于我的代码,例如此行
var hd2 = hdd.getElementsByTagName('outputparametar')[0].innerHTML
这样调用:
var hd2 = hdd.getElementsByTagName('outputparametar').item(0).textContent
你知道,它有效:)
所以我猜IE在解析和引用成熟度指数&gt;的子节点方面存在一些问题。 1(因为它成功解析了第一级!)但在某种程度上在dom中获得了一些权限问题..
好的,经验教训,使用第二种方法,而且我们没有跨浏览器问题,至少现在,至少:)
欢呼,k