Javascript 数据集和Internet Explorer 11

Javascript 数据集和Internet Explorer 11,javascript,internet-explorer,Javascript,Internet Explorer,在Internet Explorer中使用element.dataset似乎有问题 获取此错误 无法获取未定义或空引用的属性“menu” 这将出现在以下代码行中: if (!node instanceof HTMLElement || !node.dataset.menu) { -------------------- 如果我使用Google Chrome并输入以下命令: document.querySelectorAll“[data menu]” 我得到以下信息: 但是,如果在Interne

在Internet Explorer中使用element.dataset似乎有问题

获取此错误

无法获取未定义或空引用的属性“menu”

这将出现在以下代码行中:

if (!node instanceof HTMLElement || !node.dataset.menu) {
--------------------

如果我使用Google Chrome并输入以下命令:

document.querySelectorAll“[data menu]”

我得到以下信息:

但是,如果在Internet Explorer 11中运行相同的命令:

它似乎已经找到了2个[数据菜单]属性,但是没有列出它们,因此节点列表为空,因此我的错误

有人知道这个问题的解决方案吗

编辑

经过进一步调查,IE似乎正在生成一个带有“数据菜单”属性的匹配元素列表节点列表,但并不像其他浏览器那个样,可以使用数据集访问这些元素


解决方案

如果需要,您可以进行简单的更改!HTMLElement | |的节点实例!node.dataset.menu进入if!HTMLElement | |的节点实例!node.dataset | |!node.dataset.menu

刚才遇到了同样的问题。您可以使用jQuery而不是Vanilla JS来解决这个问题,如果这是一个选项,那么问题是否太老了


无论如何,浏览器是否在IE兼容模式下运行?这可能会影响查询选择器在数据上的工作方式-*

您是否尝试过使用getAttribute?IE11应该支持数据集,但尝试使用11-fallback。您是否启用了IE兼容模式?问题是,我正在使用querySelector获取所需元素的列表,我必须以其他方式引用该元素才能在其上使用getAttribute。“如果我能正确地理解你,我会帮你的。”马丁鲍尔。“你能解决它吗?”马克因为两年前有人问这个问题,我记不得了。但我想为数据集添加一个polyfill可以解决这个问题。这并不能解决问题,它需要检查数据集中是否有菜单。问题在于InternetExplorer和dataset,正如您所看到的,我将该命令放在下面,以查看它包含的内容,并显示undefined:S