Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MutationObserver无法获取所有更新_Javascript_Jquery_Google Chrome_Mutation Observers - Fatal编程技术网

Javascript MutationObserver无法获取所有更新

Javascript MutationObserver无法获取所有更新,javascript,jquery,google-chrome,mutation-observers,Javascript,Jquery,Google Chrome,Mutation Observers,我在chrome扩展中有以下代码: var observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { if (mutation.type === "childList") { Log.Debug("mutation: Childlist:"+mutation.addedNodes.length); forEach.call(mu

我在chrome扩展中有以下代码:

var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
    if (mutation.type === "childList") {
       Log.Debug("mutation: Childlist:"+mutation.addedNodes.length);
        forEach.call(mutation.addedNodes, function (addedNode) {
            if (addedNode.classList !== undefined) {
                if (addedNode.classList.contains('nja')) {
                    Log.Debug("DOM PD:"+addedNode.classList);
                    DoFancyStuff(addedNode);
                }
            }
       }
 }});
这发生在动态添加内容的站点上。(谷歌+)。如果用户向下滚动并只添加了一些新元素,那么一切都会非常完美

如果用户离开浏览器一段时间,然后单击一个按钮以显示大量新元素,那么MutationObserver似乎会错过一些节点。我可以在调试窗口中验证此行为。(添加了“nja”-类的一些div被写入控制台,有些没有)

所以对我来说,这似乎只有在一次添加的div不太多的情况下才有效。是否有任何配置可更改此行为


(因为这是一个chrome扩展,我只需要chrome的解决方案,而不需要任何其他浏览器)

如果带有
nja
类的
div
是添加的元素的子元素,此变异观察者将看不到它

例如,使用突变观察者在页面上执行以下操作:

var added = document.createElement('section');
added.innerHTML = '<div class="nja">nested</div>';
document.body.appendChild(added);
var added=document.createElement('section');
added.innerHTML='nested';
document.body.appendChild(新增);
您应该看到,观测者将运行
部分
元素,而不是
div.nja


也许您只需要对每个添加的元素执行
查询选择all

嗨,伙计们,我发现在检测[contenteditable]元素中的文本更改时,MutationObserver是一个相当糟糕的工具。尤其是在我使用的Mac OS Safari中

我无意中发现,当我在我的站点上使用void SetInterval时,MutationObserver或多或少都能像预期的那样工作,即使在Safari中也是如此

下面是我的工作示例。查看控制台输出,查看更改SetInterval持续时间时的响应度。同时试着注释掉整个设置间隔,看看观察者会变得多么糟糕

var target=document.querySelector(“#某物”);
控制台日志(目标);
var observer=新的WebKit突变观察者(功能(突变){
突变。forEach(功能(突变){
变量时间=新日期();
log(time.getHours();
log(target.innerHTML);
});
});
观察者,观察(目标{
属性:正确,
儿童名单:是的,
characterData:true,
子树:真
});
//observer.disconnect();-停止观察
setInterval(函数(){},10)
这需要一些调查