javascript - 插入时动态创建的 DOM 节点的处理程序

标签 javascript jquery dom bookmarklet userscripts

我喜欢在我不拥有或控制的页面上运行自定义脚本。很多时候,这些页面动态创建了我想要应用功能的内容。

这可能吗?如果是这样,我该怎么做?理想情况下,我正在寻找一些实时 jQuery 的 live 方法,除了不是绑定(bind)像 click 这样的事件,它更像是在 DOM 中加载元素时发生的事件. load 事件适用于某些元素,但我认为并非适用于所有元素...

对于这个问题,假设您无法查看或更改插入 DOM 节点的代码。我想要一种可以在用户脚本或小书签中使用的技术,这种技术可以跨多个不相关的站点使用。

编辑:我正在寻找可以在我的反色书签上使用的东西:JavaScript: Invert color on all elements of a page

最佳答案

假设您运行的是 Firefox 或 Chrome 等浏览器,您可以监听 DOMNodeInserted 事件:

$(document).on('DOMNodeInserted', function(e) {
    $(e.target).css({ color : '#c00' });
});

$('body').append('<div>test</div>');​

fiddle :http://jsfiddle.net/VeF6g/ (在 IE 中可能会失败)

更新: 该事件已弃用。你应该使用 MutationObserver:

var observer = new MutationObserver(function(mutationList) {
    for (var mutation of mutationList) {
        for (var child of mutation.addedNodes) {
            child.style.color = '#c00';
        }
    }
});
observer.observe(document, {childList: true, subtree: true});

// ready? Then stop listening with
observer.disconnect();

更多信息在这里:https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

关于javascript - 插入时动态创建的 DOM 节点的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778962/

相关文章:

jquery - 使导航向左浮动的问题

php - 无法访问 HTML 中的输入 dom 变量

javascript - 创建某个标签时是否有可能引发事件?

javascript - 如何更改ng-class更改$ scope.value?

javascript - jQuery slider 不能完美循环

javascript - Event.target 对关键事件不精确,但与点击事件完美结合,为什么?

javascript - 使用动画将toggleClass('hidden')转换为.toggle()

javascript - 监听指令内的取消选中事件

javascript - 使用 jquery 将 ajax 调用返回值分配给 var

javascript - 第 n 个类型元素的 css 选择器 - 第 n 个类型()的奇怪实现