使用Chrome扩展程序将jQuery注入Google.com

时间:2016-02-08 02:13:24

标签: javascript jquery google-chrome google-chrome-extension

我正在建立一个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没有被提及......我不知道问题是什么......它似乎没有有道理。

有什么想法吗?谢谢。

1 个答案:

答案 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);