对IE 11 DOM属性的Javascript访问: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 = [];

我试图使用一个名为domjson的模块——它提供了DOM的JSON表示。除了IE 11中的一个奇怪的停顿外,它工作得很好。domjson中的函数被传递给一个节点,然后迭代该节点的属性。迭代属性时,IE 11停止并报告InvalidStateError。下面是对函数的修改:

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”时会发生什么情况?