IE 11 上的 MutationObserver 语法错误

MutationObserver syntax error on IE 11

我正在使用 MutationObserver 在切换面板内容时更改某些变量的值(我正在使用 Bootstrap 选项卡)。在 Chrome 和 Firefox 中一切正常,但出于某种原因,当我使用 IE 对其进行测试时,它在控制台中显示语法错误并且脚本中断。这是我的 MutationObserver 代码:

var observer = new MutationObserver(function (MutationRecords, MutationObserver) {
        dataTable = null;
        tabla = null;
        tabActiva = $('.tab-content').find('.active');
        formFiltro = tabActiva.find('form');
        tabla = tabActiva.find('table');
    });

    observer.observe(target, {
        childList: true,
        attributeFilter: ['class'],
        subtree: true
    });

控制台指出错误在 observer.observe() 上。我不知道发生了什么。提前致谢。

以防万一,这是我的 "target":

var target = $('.tab-content > .tab-pane').get(0);

使用 MutationObserver,可以过滤属性,但前提是您首先要观察元素属性。因此,选项 attributeFilter 仅在 attributes 设置为 true 时适用。

如果您指定 attributeFilter 而未将 attributes 设置为 true,则 IE11 将抛出语法错误,而 Chrome 和 Firefox 将静默忽略 attributeFilter.

要解决语法错误,请将 attributes 设置为 true 或删除 attributeFilter

  1. 根据MDN,如果指定attributeFilter 属性,

there's no need to also set attributes to true, as it's implied.

  1. DOM Living Standard specificationattributeFilter 定义为

Set to a list of attribute local names (without namespace) if not all attribute mutations need to be observed and attributes is true or omitted.


  • 看来 IE11 并非如此 - 它不符合规范。
  • IE11 的解决方法:设置 attributeFilter 也设置 attributes: true