[英]Chrome extension: Communication between content script and background.html
我是Chrome擴展新手。 我正在嘗試在內容腳本和background.html頁面之間進行通信。 background.html向內容腳本發送請求“ hello ”,內容腳本應以“ hello background ”警報響應。 但它只是沒有發生。 我的background.html代碼是:
function testRequest() {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {greeting: "hello"});
});
}
content.js代碼:
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.greeting == "hello")
alert("hello background");
}
);
popup.html代碼:
<!doctype html>
<html>
<head></head>
<body>
<form>
<input type="button" value="sendMessage" onclick="testRequest()" />
</form>
</body>
</html>
manifest.json :
{
"browser_action": {
"default_icon": "icon.png",
"popup": "popup.html"
},
"background": {
"page": "background.html"
},
"permissions": [
"tabs",
"http://*/*",
"https://*/*",
"notifications",
"contextMenus"
],
"content_scripts": [
{
"matches": ["http://*/*","https://*/*"],
"js": ["content.js"]
}
],
"name": "FirstExtension",
"version": "1.0"
}
請幫忙!
sendRequest
/ onRequest
被替換為Chrome 20中的sendMessage
/ onMessage
。 *Message
不僅僅是*Request
的別名,它是一個不同的API。
如果您想支持Chrome <20(許多Ubuntu用戶仍在Chromium 18,因為PPA未更新),請使用onRequest
和sendRequest
。 否則,請使用*Message
方法。
另一個問題是您的功能位於后台頁面,並且在彈出窗口中進行調用。 這些是不同的范圍,如果要從彈出窗口調用背景頁面方法,請使用chrome.extension.getBackgroundPage()
:
chrome.extension.getBackgroundPage().testRequest();
最后說明:您正在使用清單版本1和內聯事件處理程序。 不推薦使用此做法,有關詳細信息,請參閱http://code.google.com/chrome/extensions/manifestVersion.html 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.