2011-06-28 46 views
1

我想了解如何使用content_script.js向我的Chrome擴展程序的後臺頁面發送請求。我已經閱讀了很多關於此的答案,但沒有人幫助過我。我似乎無法讓偵聽器執行。Chrome擴展程序 - content_script.js加載不正確

manifest.json的

"background_page": "background.html", 
... 
"content_scripts":[ 
{ 
"matches": ["http://*/*"], 
"run_at": "document_start", 
"js": ["jquery.min.js", "content_script.js"] 
} 
] 
... 

content_script.js

chrome.extension.sendRequest({'url': 'http://example.com'}, function(data) { 
    $("#list").html(data); 
}); 

background.html

<script type="text/javascript"> 

chrome.extension.onRequest.addListener(function(request, sender, callback) { 

    $.ajax({ 
     type: "GET", 
     dataType: 'html', 
     url: request.url, 
     username: "username", 
     password: "password", 
     success: callback 
    }); 
}); 

</script> 

我需要在任何地方注入content_script.js?根據我的理解,當擴展加載時,這應該全部在後臺運行。任何幫助將不勝感激。

+0

你看到內容腳本被注入,檢查開發工具控制檯 - 腳本部分 –

+0

不,它沒有被注入。 – rybo

+0

您正在測試的網站是什麼,請確保它不是SSL –

回答

0

由於"run_at": "document_start",當您注入此腳本時,DOM尚未準備好,因此您無法執行$("#list").html(data);

從清單中刪除該行或將您的代碼放入window.onload偵聽器中。

+0

因此,刪除'run_at'會強制腳本在擴展加載時注入?是否沒有地方需要指定腳本注入的時間/地點? – rybo

+0

@rybo不是當擴展加載時,而是當你注入的頁面被加載時,所以你可以搜索DOM。我不明白問題的第二部分。什麼時候/地點是什麼意思? – serg

相關問題