XML 数据源对象 (dso) 的类型为 HTMLUnknownElement,并且不会发生数据绑定,并且记录集未定义

XML data source object (dso) has type HTMLUnknownElement and data binding does not happen and recordset is undefined

提问人:shawn 提问时间:6/25/2022 最后编辑:shawn 更新时间:6/29/2022 访问量:96

问:

我的问题是关于将旧数据岛与Microsoft Edge一起使用。2019 年,我可以在边缘浏览器上使用数据岛功能。直到 2022 年 6 月,当我再次打开笔记本电脑并更新了 Windows 10 时,我才被这项工作打断了。现在,数据岛在边缘或IE浏览器上不起作用。因此,我想当我的代码即使在 Internet Explorer 和我的页面上的 meta 标记上也不起作用时,必须对 Windows 10 本身进行重大更新以模拟 IE7。

为了简化我的问题,我找到了以下简单的 HTML 示例,用于将 XML 数据从具有此链接的 Microsoft 页面绑定到表:

https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms762701(v=vs.85)。

我还在 HTML 的 head 部分添加了 meta 标记,用于模拟 IE7。但是,数据绑定不起作用,并且 XML 数据不会填充表字段。据我所知,Microsoft 希望以下 xml 绑定代码正常工作。

当我使用 javascript 检查作为 XML 数据源 (dso) 的 ID 的 xmlMeetings 的类型时,该类型显示为 Object HTMLUnknowElement。但我希望该对象是已知的,并且具有所有方法和属性,包括记录集。我的目的是最终访问记录集,但当然,对于 HTMLUnknowElement(即 dso 或 xmlMeetings)来说,记录集是未定义的。

根据Microsoft的说法,当使用具有正确声明的文档类型时,meta标记中的IE=EmulateIE7模拟Internet Explorer 7。过去,即使我没有注意文档类型的正确声明,我在将 xml 数据绑定到 Microsoft Edge 浏览器中的表时也没有问题。

谁能告诉我:

1- 为什么没有发生 DSO 数据绑定到表?如果发生数据绑定,那么我希望也可以访问记录集。

2- 此 HTML 页面的文档类型的正确声明是什么?

谢谢你的帮助。

我将以下代码保存在 testXML.html 文件中,并使用 Microsoft 边缘浏览器和 ie11 加载页面。不会发生与表的数据绑定。

<HTML><HEAD>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

<script type=’text/javascript’>
    alert(‘typeof()=’ + typeof(document.getElementById(‘xmlMeetings’))
</script>
</HEAD><TITLE></TITLE>
<BODY>
<XML ID="xmlMeetings">
<?xml version="1.0" ?>
<meetings>
<meeting>
<date>1/1/99</date>
<time>9:00</time>
<location>104</location>
</meeting>
<meeting>
<date>2/1/99</date>
<time>13:00</time>
<location>34</location>
</meeting>
<meeting>
<date>3/1/99</date>
<time>14:30</time>
<location>20</location>
</meeting>
</meetings>
</XML>

<table style='border:1px solid red' datasrc="#xmlMeetings">
<tr>
<td><div datafld="date"></div></td>
<td><div datafld="time"></div></td>
<td><div datafld="location"></div></td>
</tr>
</table>

</BODY>
</HTML>
XML 绑定 仿真 Internet-Explorer-7

评论


答:

0赞 Yu Zhou 6/27/2022 #1

content="IE=EmulateIE7"仅适用于IE浏览器。它在 Edge 中不起作用。您可以查看此文档

此功能不会在任何版本的 Microsoft Edge 中实现。

如果你想使用Edge,我认为你有两个选择:

  1. 使用一些数据岛的替代解决方案。您可以参考此线程,看看解决方案是否适合您。
  2. 您可以在 Edge IE 模式下加载站点,以便它可以使用(需要在客户端配置 IE 模式)。有关Edge IE模式的更多信息,请参阅此文档content="IE=EmulateIE7"

评论

0赞 shawn 6/27/2022
非常感谢您的回复。我将浏览链接,然后继续。
0赞 shawn 6/28/2022
目前,我可以说它也不适用于 ie。我上一次在 Microsoft Edge 浏览器中成功使用此功能是在 2019 年。新问题必须与 Windows 10 更新有关,而不是与浏览器本身有关。
0赞 Yu Zhou 6/29/2022
是的,可能是。我认为你应该转向一些新的方式,而不是已经过时的数据岛。