我正在尝试做什么
这是一个扩展程序,一旦页面加载,就会隐藏包含具有“示例”类的子项的div
。
会发生什么
无。在js
页面上,我放置的任何内容都会被忽略。我尝试过使用控制台并创建页面提醒,但没有任何工作。
代码
manifest.json
:
{
"name": "Example",
"version": "1.0",
"default_locale": "en",
"permissions": [
"http://example.com/*"
],
"content_scripts": [
{
"matches": [
"http://example.com/*"
],
"js": [
"js/jquery/jquery.js",
"src/inject/inject.js"
]
}
]
}
src/inject/inject.js
:
chrome.extension.sendMessage({}, function(response) {
var readyStateCheckInterval = setInterval(function() {
if (document.readyState === "complete") {
clearInterval(readyStateCheckInterval);
//Nothing here actually happens
alert("Extension loaded");
console.log("Extension loaded");
//The script that I *want* to happen
$('.example-stamp').parent().parent.().parent().hide();
}
}, 10);
});
备注
jquery.js
文件是jQuery.com的最新下载。将解压缩的扩展程序加载到Chrome时没有错误,控制台中不显示任何内容 - 甚至是错误。
我一直在http://www.example.com
进行测试。
答案 0 :(得分:0)
chrome.extension.sendMessage
用于将消息从内容脚本发送到后台页面或其他扩展页面。由于您只定义了一个内容脚本,因此将不会收到该消息,并且永远不会调用您的回调函数。document_idle
处运行您的内容脚本,有时在文档准备就绪和文档完成之后。请参阅Content Scripts run_at
清单参数
run_at
设置为document_start
并监听窗口加载事件。当您使用jQuery时,您可以这样做:$(window).on("load", function() { console.log("Extension loaded"); $('.example-stamp').parent().parent.().parent().hide(); });
答案 1 :(得分:0)
如何修复
更改
"content_scripts": [
{
"matches": [
"http://example.com/*"
],
到
"content_scripts": [
{
"matches": [
"http://*.example.com/*"
],
<强>为什么强>
答案与js
代码无关,而是清单。
出于某种原因,除非content-script
jSON包含字段http://*.example.com/*
,否则javascript根本不会注入,因为http://example.com
本身不起作用,即使是标题网址。