我正在尝试编写一个改变Twitter帖子中关键字的Greasemonkey脚本。麻烦的是,内容是“延迟加载”,并在用户请求时添加。
如果我向添加的元素添加事件监听器,我可以使用JQuery的delegate()
。由于我只想在加载时更改内容,因此这似乎不合适。
突变事件似乎符合要求。它们是Gecko特有的,但这对于Greasemonkey脚本来说并不重要。问题是,they have been depreciated和一组very good reasons。
当然我可以使用计时器并定期轮询DOM,但这看起来很蠢。
如何检测DOM的添加内容并对插入的元素做出反应?
答案 0 :(得分:8)
如果你想检测AJAX创建的节点你的选择(除了你明智要排除的Mutation事件):
我已经一次完成了所有这些,除了一个之外的所有这些都有很大的缺点:
我建议你使用the waitForKeyElements() utility并完成它。 它非常易于使用。例如:
// ==UserScript==
// @name Highlight good comments
// @include http://SOME_SITE/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// ==/UserScript==
function highlightGoodComments (jNode) {
if (/beer/i.test (jNode.text () ) ) {
jNode.css ("background", "yellow");
}
}
waitForKeyElements ("#userBlather div.comment", highlightGoodComments);