对IE 11 DOM属性的Javascript访问:InvalidStateError
我试图使用一个名为domjson的模块——它提供了DOM的JSON表示。除了IE 11中的一个奇怪的停顿外,它工作得很好。domjson中的函数被传递给一个节点,然后迭代该节点的属性。迭代属性时,IE 11停止并报告InvalidStateError。下面是对函数的修改:对IE 11 DOM属性的Javascript访问:InvalidStateError,javascript,internet-explorer,dom,Javascript,Internet Explorer,Dom,我试图使用一个名为domjson的模块——它提供了DOM的JSON表示。除了IE 11中的一个奇怪的停顿外,它工作得很好。domjson中的函数被传递给一个节点,然后迭代该节点的属性。迭代属性时,IE 11停止并报告InvalidStateError。下面是对函数的修改: var copyJSON = function (node, opts) { var copy = {}; let nodePropertyNames = [];
var copyJSON = function (node, opts) {
var copy = {};
let nodePropertyNames = [];
for (var n in node) {
nodePropertyNames.push(n);
} // for
nodePropertyNames.forEach(function (propertyName) {
console.log(node); //
console.log(propertyName); //
console.log(node[propertyName]); //
console.log('========================================\n\r')
}) // foreach
copy = boolFilter(copy, opts.domProperties);
return copy;
};
在成功遍历节点的大多数属性后,即节点[propertyName]处出现错误。在错误迭代中,propertyName是“文档类型节点”。我可以成功地记录节点['DOCUMENT\u TYPE\u node'],值为10
有什么想法或线索吗?当您迭代时,其中一个DOM节点似乎已不在树中,因为如果我没记错的话,您就会出现此错误。我会检查DOM节点是否存在,并且只在迭代后删除它们。错误发生在我传递给domjson的第一个节点上,我从HTML开始。我希望我能弄明白这一点,domjson对我当前的项目非常有帮助。您是在加载事件之后还是在卸载事件之前运行此函数?document.addEventListener('DOMContentLoaded',function(event){console.log(“DOM Full loaded and parsed 2”);var domasjson=domjson.toJSON(document.getElementsByTagName('html')[0]);将“DOMContentLoaded”更改为“load”时会发生什么情况?