IE10:msxml.load(document.all(“UserInfo”)抛出错误

时间:2013-04-19 19:52:23

标签: internet-explorer-10 msxml

我在<xml>文件的.jsp标记中有一个XML字符串,我正在尝试使用xml加载xmldoc.Load(document.all("Info")),但是它会出错< / p>

Invalid procedure call or argument

但是一切都在Ie9中运作。当我检查document.all(“Info”)时,它说

IE 10中的

Object UnknownHTMLElement和IE9中的Object。

这是我使用的代码片段

var xmldoc=new ActiveXObject("MSXML2.DOMDocument.3.0");
boolXMLLoaded=xmldoc.load (document.all("UserInfo"))
    <xml id=UserInfo>`
<?xml version='1.0'?><RESPONSES UserName="  DOUGLAS  ................
</xml>

非常感谢任何帮助..

2 个答案:

答案 0 :(得分:0)

您的代码在较新的IE版本中不起作用的原因是因为您使用的是过时的(非常非常过时)代码。如果您希望现代浏览器(包括IE10)能够正常工作,则需要更新到现代Web标准。

立即出现两个问题:

  1. document.all已弃用多年;你不应该使用它 - 它是非标准的,只是仍然存在以允许与古老版本的IE(例如IE5)向后兼容。现代IE版本不喜欢它,肯定不适用于其他IE浏览器。

    在大多数情况下,如果您尝试按ID引用元素(如本例所示),则应使用document.getElementById()代替。

    Mozilla Developer Network的详细信息。

  2. new ActiveXObject("MSXML2.DOMDocument.3.0")也是非标准的,已弃用,也不应在现代浏览器中使用。同样,它是IE特定的,并且从IE7开始被替换为Web标准替代。

    您应该将其替换为document.implementation.createHTMLDocument();。另见anwsers here

    如果您需要支持IE6或更早版本,那么您可以检测浏览器是否支持标准语法,并仅针对旧的IE版本提供回退到旧的ActiveX控件。

  3. 鉴于您向我们展示的一小部分代码使用的是两个明显且众所周知的特征,这些特征非常过时,如果我们看到更多,我希望会看到更多类似性质的问题你的代码因此,我建议您在SO的姊妹网站https://codereview.stackexchange.com/上发布一些代码,以获得有关如何改进它的一些额外反馈。

    希望有所帮助。

答案 1 :(得分:0)

var xmldoc= new ActiveXObject("Microsoft.XMLDOM");

替换它代替

var xmldoc=new ActiveXObject("MSXML2.DOMDocument.3.0");

再试一次