我正在编写用户脚本,用另一个单词替换页面中每个单词的出现次数(想想the cloud
- > my butt
)。它基于此脚本https://github.com/panicsteve/cloud-to-butt/blob/master/Source/content_script.js
通常这很容易。我只需要在页面加载完成后运行它。但是,我正在对Facebook新闻源执行此操作,并且该脚本仅适用于最初加载的内容。当我向下滚动并加载新内容时,脚本不会触及这些新内容中的文本。
如何在我向下滚动页面时加载新内容时,脚本会再次运行?
答案 0 :(得分:0)
这很难看,但是使用window.setTimeout()函数可以做到这一点......当然是p代码。
var updateStuff() {
var els = document.GetElementsByClassNames("ThingsToLookFor");
for (var i = 0; i < els.length; i++) {
var el = els[i];
if (el["data-touched"]) {
// We've seen this
continue
}
// Update the element or whatever you do
el["data-touched"] = true;
window.setTimeout(updateStuff, 250);
}
}
// Kick it off
updateStuff();
实际上不使用数据触摸 - 我不想寻找更新数据的真实语法 - 或者你可以使用el.setAttribute("data-touched", true)
答案 1 :(得分:0)
最后我使用了MutationObserver
:
// select the target node for mutation observation
var target = document.body;
// create an observer instance
var observer = new MutationObserver(function(mutations) { // mutations: an array of MutationRecord objects
mutations.forEach(function(mutation) {
var addedList = mutation.addedNodes;
for (var i = 0; i < addedList.length; ++i) {
// do something with addedList[i]
}
});
});
// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true, subtree: true };
// pass in the target node, as well as the observer options
observer.observe(target, config);