MutationObserver很慢并且给DOM增加了太多

时间:2015-09-15 15:55:42

标签: javascript jquery dom google-chrome-extension

我不确定描述这个的最佳方法是什么,但每次DOM更改时我都会调用变异观察器,并且由于某种原因它会不断地将DOM添加到我的页面而不是覆盖它已经创建的DOM 。

更具体地说,我正在构建一个chrome扩展程序,每当用户将鼠标悬停在特定单词上时,他们就会获得mutationobserver弹出窗口。这在没有mutationobserver的情况下完全正常,但是当我添加(codeSegment1)时,每次用户悬停时它似乎都会添加很多弹出窗口。这显然非常糟糕......

以下是我用来添加悬停jQuery(document).ready(function($) { $('.newHover').each(function() { Tipped.create(this, "<iframe src='http://myurl.com"'></iframe>", { skin: "white", position: 'right', background: '#fff', detach: false, shadow: true, }); }); }); 的代码:

(codeSegment2)

正如我所说的,第一次工作正常......

以下是变异观察者var arrayOfP = $("p").text(); var observer = new WebKitMutationObserver(function(mutations) { //Sends message to another document and the other document //sends a message back to the code above (i.e Tipped.create) chrome.runtime.sendMessage(arrayOfP, manageResponse); }); observer.observe(document.body, { attributes: true, childList: true, characterData: true }); 的代码:

codeSegment1

所以这就是我的想法:

  • 网页加载。
  • codeSegment2做到了。
  • 新文本动态添加到页面
  • codeSegment1开火
  • def generate_pair(p): return (p, 1-p) my_list = [ generate_pair(random.random()) for i in range(10) ] 再一次又一次地做了这件事。

我可能是错的。但是我希望这里的某个人可以了解正在发生的事情以及如何解决这个问题。

感谢。

0 个答案:

没有答案