chrome扩展程序不适用于安全站点https

时间:2011-03-20 19:20:00

标签: google-chrome-extension

我已经编写了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是我编码的地方。

谢谢

2 个答案:

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