1

我目前正在使用选择器解析 WMS Capabilities 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 中,类型dataIXMLDOMDocument2我无法使用选择器查询解析的类型。

IXMLDOMDocument2也是只读的,导致嘶嘶声在以下位置引发异常:

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

因为它将尝试运行elem[ expando ] = {}失败,因为它IXMLDOMDocument2是只读的。有Object doesn't support this property or method错误。


有没有办法让我layerNames使用选择器来填充我的数组,或者我在追逐不可能的事情?

4

1 回答 1

1

想出了这个。

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

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

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


解决方法如下:

$(data).find("WMT_MS_Capabilities Capability Layer Layer Name:not(Style Name)").each(function (i) {
  layerNames[i] = $(this).text();
});
于 2013-03-11T03:42:16.440 回答