Javascript 从 DOMNodeInserted 到 MutationObserver

这段代码是在 Tamper Monkey 的 content.js 中发现的。被浏览器警告应该替换掉这种写法。

bn.addEventListener("DOMNodeInserted", o, s)

替换成

var [adder, remover] = ((bn, o, s) => {
    var helper = { remove : () => {}, add : () => {} }
    var observer = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
        var nodes = Array.prototype.slice.call(mutation.addedNodes);
        nodes.forEach((node_) => { o(); helper.remove() });
      });
    });
    helper.remove = () => observer.disconnect();
    helper.add = () => observer.observe(bn, { childList: true, subtree: true, };
    return [helper.add, helper.remove];
})(bn, o, s);
adder()
bn.removeEventListener("DOMNodeInserted", o, s)

替换成

remover()