расширение chrome не работает для защищенных сайтов https - PullRequest
2 голосов
/ 20 марта 2011

Я написал расширение для Chrome, но оно не работает на сайтах https. В настоящее время это фоновая страница, которая добавляет скрипт на страницу. Он запускает jquery и некоторые библиотеки тоже. Единственный способ, который я до сих пор обнаружил, - это запустить фоновую страницу и использовать chrome.tabs.executescript. Если кто-нибудь знает лучший способ, то это тоже поможет.

Я добавил разрешения для сайтов http и https, поэтому я подумал, что этого будет достаточно. Пожалуйста, может кто-нибудь помочь, спасибо.

Manifest:

 {
  "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 ]

3 голосов
/ 20 марта 2011

Попробуйте добавить «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 голос
/ 21 марта 2011

Возможно, есть проблема с зависимостями.Все вызовы 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() {}); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...