Javascript 在特定网站上加载页面时搜索/替换内容脚本
我正在编写一个chrome扩展,它需要替换包含某些关键字的facebook帖子内容。它在页面加载时工作得很好,但是当我在facebook中跟踪任何链接时,脚本都不会运行。所以它在主页上工作,但如果我按下主页链接,它将加载没有此脚本的相同页面 我有一条控制台日志消息说脚本已加载,第一页只会看到一次 我已经设法让它在每次通过设置加载新页面时都加载代码 "all_frames": true 在第一次页面加载时刷新页面时,此选项非常有效。但是,当稍后重新运行时,当我在控制台日志中获得第二条加载的消息后,它找不到这些div中的任何一个,即使它们显然仍然存在于页面中-我尝试使用setTimeout检查它是否运行得太快,但没有成功 有什么办法可以做到这一点吗?本质上,我希望使用userContentWrapper类为所有div运行check_节点,并且每次加载新页面时都要运行该节点 当页面自动加载新帖子时,我也希望在滚动时运行该功能,但我使用的是变异观察者 代码 manifest.jsonJavascript 在特定网站上加载页面时搜索/替换内容脚本,javascript,jquery,facebook,google-chrome-extension,Javascript,Jquery,Facebook,Google Chrome Extension,我正在编写一个chrome扩展,它需要替换包含某些关键字的facebook帖子内容。它在页面加载时工作得很好,但是当我在facebook中跟踪任何链接时,脚本都不会运行。所以它在主页上工作,但如果我按下主页链接,它将加载没有此脚本的相同页面 我有一条控制台日志消息说脚本已加载,第一页只会看到一次 我已经设法让它在每次通过设置加载新页面时都加载代码 "all_frames": true 在第一次页面加载时刷新页面时,此选项非常有效。但是,当稍后重新运行时,当我在控制台日志中获得第二条加载的消息后,
{
"manifest_version": 2,
"name": "Fad Stopper",
"version": "1.2",
"description": "Removes annoying fads from Facebook and Twitter",
"content_scripts": [
{
"matches": ["https://twitter.com/*", "*://www.facebook.com/*"],
"js": ["jquery-2.1.1.min.js", "content.js"],
"run_at": "document_end",
"all_frames": true
}
],
"permissions": [
"storage"
],
"options_page": "options.html"
}
js我只列出了重要的代码,而不是整个文件
console.log('fadstopper loaded! '+Math.random().toString());
$( document ).ready(function() {
console.log( "ready! "+$site );
$("div.userContentWrapper").each(function( index ) {
console.log("Found node");
check_node($(this));
});
});
function check_node($node) {
// Blah blah, do check & replace content if necessary
}
非常感谢您的帮助 我不能将此标记为重复,但本质上你的问题归结为Xan-感谢链接-我已经使用变异观察员的部分代码来观察dom的变化,因为新帖子被添加到现有页面中-我这里的问题是如何在点击链接和facebook加载新页面后拾取新帖子,虽然代码在运行,但它似乎没有拾取节点进行检查,甚至变异观察员也没有拾取节点
console.log('fadstopper loaded! '+Math.random().toString());
$( document ).ready(function() {
console.log( "ready! "+$site );
$("div.userContentWrapper").each(function( index ) {
console.log("Found node");
check_node($(this));
});
});
function check_node($node) {
// Blah blah, do check & replace content if necessary
}