我已经编写了Chrome扩展程序,但它似乎不适用于https网站。它目前是一个将脚本注入页面的后台页面。它运行jquery和一些库。到目前为止我发现的唯一方法是运行后台页面,并使用chrome.tabs.executescript。如果有人知道更好的方式那么这也会有所帮助。
我已经为http和https网站添加了权限,所以我认为这就足够了。请有人帮忙,谢谢。
清单:
{
"name": "My First Extension",
"version": "1.0",
"description": "The first extension that I made.",
"background_page": "popup.html",
"permissions": ["tabs", "http://*/*", "https://*/*"]
}
popup.html
<script type="text/javascript">
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab)
{
if(changeInfo.status == "loading")
{
chrome.tabs.insertCSS(null, { file: "jquery-ui-1.8.10.custom.css" }, null);
chrome.tabs.executeScript(null, { file: "jquery.min.js" }, null);
chrome.tabs.executeScript(null, { file: "jquery-ui-1.8.10.custom.min.js" }, null);
chrome.tabs.executeScript(null, { file: "jquery.hotkeys-0.7.9.min.js" }, null);
chrome.tabs.executeScript(null, { file: "custom.js" }, null);
}
})
</script>
文件custom.js是我编码的地方。
谢谢
答案 0 :(得分:3)
尝试将“conent_scripts”添加到manifest.json:
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"css": ["empty.css"]
}]
您必须指定'css'或'file'。在我的附加组件中,脚本是动态加载的,所以我只使用虚拟css文件。
另请参阅:http://code.google.com/chrome/extensions/content_scripts.html
答案 1 :(得分:1)
可能存在依赖项问题。对executeScript的所有调用都是异步的。因此,当您开始注入jquery热键时,您不能假设注入了jquery。你应该更好地使用这样的东西:
var runScripts = function(tabId, scripts, cb) {
var current = scripts.shift();
if (current) {
chrome.tabs.executeScript(tabId, {file: current}, function(a) {
console.log("Finished running script:", current);
runScripts(tabId, scripts, cb);
});
} else {
cb();
}
};
chrome.tabs.insertCSS(null, {file: "jquery-ui-1.8.10.custom.css"}, function () {
runScripts( null, ["jquery.min.js", "jquery-ui-1.8.10.custom.min.js", "jquery.hotkeys-0.7.9.min.js", "custom.js"], function() {});
});