我正在建立一个Chrome扩展程序,并且非常希望将jQuery注入Google网站,但由于某种原因它只是不适合我。
这是我的content_scripts
"content_scripts": [{
"matches": ["*://www.google.com/*"],
"css": ["src/inject/inject.css"],
"js": ["js/jquery/jquery.min.js", "src/inject/inject.js"],
"run_at" : "document_start"
}]
和jQuery在它应该是的文件夹中。在我的inject.js
文件中,我有:
$("body").append("Hello World");
console.log("Loaded.");
奇怪的是,当我访问Google.com时,Loaded.
确实出现在控制台中,但Hello World
没有附加到body
,也没有收到错误控制台非常奇怪。我甚至在inject.js
内部做了:
if (window.jQuery) {
$("body").append("Hello World");
console.log("Loaded.");
} else {
console.log('Not Loaded.');
}
并且Loaded.
再次出现在控制台中,Hello World
没有被提及......我不知道问题是什么......它似乎没有有道理。
有什么想法吗?谢谢。
答案 0 :(得分:1)
内容脚本在沙盒上下文中运行。因此,您无法从其中更改页面dom。但有一个解决方法:
在您的内容脚本中,您可以通过脚本标记添加所有脚本,如下所示:
var script_tag = document.createElement("script");
script_tag.setAttribute("src", chrome.extension.getURL("js/jquery/jquery.min.js"));
document.head.appendChild(script_tag);