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
。
- 根据MDN,如果指定
attributeFilter
属性,
there's no need to also set attributes
to true
, as it's implied.
- DOM Living Standard specification 将
attributeFilter
定义为
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
。
我正在使用 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
。
- 根据MDN,如果指定
attributeFilter
属性,
there's no need to also set
attributes
totrue
, as it's implied.
- DOM Living Standard specification 将
attributeFilter
定义为
Set to a list of attribute local names (without namespace) if not all attribute mutations need to be observed and
attributes
istrue
or omitted.
- 看来 IE11 并非如此 - 它不符合规范。
- IE11 的解决方法:设置
attributeFilter
也设置attributes: true
。