javascript - 在 IE8 中使用选择器解析 XML-

标签 javascript jquery xml internet-explorer sizzle

我目前正在使用选择器解析 WMS 功能 XML 文件,这非常有效,干净的代码解决方案。

但是我偶然发现了 IE8 的一个问题 -(Chrome、Safari、Firefox 等都运行良好)

$.get(capabilitiesUrl, function (data) {
  $("WMT_MS_Capabilities Capability Layer Layer Name",  $(data)).not("Style Name").each(function (i) {
    layerNames[i] = $(this).text();
  });
});

这将在合适的浏览器中成功填充我的layerNames数组。

在 IE9+ 中 data[Object, Document]

的类型

但是在 IE8 中,data 的类型是 IXMLDOMDocument2 的类型,我无法使用选择器查询进行解析。

IXMLDOMDocument2 也是只读的,导致 sizzle 抛出异常:

outerCache = elem[ 扩展 ] || (elem[expando] = {});

因为它将尝试运行 elem[ Expando ] = {},但由于 IXMLDOMDocument2 是只读的而失败。出现对象不支持此属性或方法错误。

<小时/>

有没有办法让我使用选择器填充我的 layerNames 数组,还是我在追求不可能的事情?

最佳答案

解决了这个问题。

如果您使用 .find() 而不是 find in 方法,它将在 IE8 中正确解析-

然后我仍然遇到 .not() 导致 sizzle 异常的问题。

我通过使用 :not() 选择器而不是使用 .not()jQuery API 来解决这个问题。

<小时/>

解决办法如下:

$(data).find("WMT_MS_Capabilities Capability Layer Layer Name:not(Style Name)").each(function (i) {
  layerNames[i] = $(this).text();
});

关于javascript - 在 IE8 中使用选择器解析 XML-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330002/

相关文章:

jquery - 滚动到每个元素的顶部,滚动不起作用

javascript - 当滚动停止百分比时触发

xml - 匹配特定父节点XSLT的特定子属性

Python XML 解析

javascript - 获取 slider 以更新 HTML Canvas

javascript - hasNext 不适用于 javascript 中的集合

javascript - JAVA FX + Javascript

javascript - 页面内容仅在硬刷新后显示,不在重定向时显示

javascript - 水平表单的 Bootstrap 验证

android - RTL-Layout 中忽略准则(Android Constraint-Layout)