我很難理解如何在Chrome擴展中傳遞信息,特別是具有特定ID的HTML元素的值,我試過了extension documentation以及這幾乎沒有幫助我。Chrome擴展:將DOM信息傳遞到背景頁面/腳本
最終,我試圖構建的擴展將讀取動態生成表單的特定頁面。該表格有一個<input id="foo">
標籤;當生成<input>
時,我希望內容腳本將包含同一頁面上另一個<div id="bar">
中包含的文本的消息傳遞給背景頁面。一旦進入後臺頁面,文本將被解析,一個switch語句將在輸入框下方創建一個div,並將其着色爲紅色或綠色並填充一些文本。
但是,現在我正在努力處理消息傳遞以及如何確定我的內容腳本實際上在做什麼。在這一點上,有人可以告訴我,只要在用戶的標籤中點擊一個按鈕並用該按鈕的ID執行alert(),我可以簡單地向後臺頁面發送消息?
這是我到目前爲止有:
manifest.json的
{
"manifest_version": 2,
"name": "Authinator",
"description": "extension",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"browser_action":{
"default_icon": "icon.png"
},
"permissions":[
"tabs",
"activeTab",
"https://ajax.googleapis.com/"
],
"content_scripts": [
{
"matches": [ "http://*/*", "https://*/*"],
"js": [ "auth.js", "jquery.min.js"]
}]
}
背景頁(background.js):
//alerts when extension icon clicked
chrome.browserAction.onClicked.addListener(function(tab) { alert('icon clicked')});
//trying to alert when button is clicked
chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){
alert(response);
})
內容腳本(AUTH .js):
var someButton = document.findElemendById("foo");
someButton.addEventListener("click", function(button){
chrome.runtime.sendMessage(button.id);
})
任何幫助或方向在這裏將不勝感激。多謝你們!
如果您的內容腳本被注入,您輸入的代碼應該有效。我不能正確理解你的問題陳述。你不確定腳本是否被注入? –
根據我的理解,你想發送消息到後臺頁面。如果您只需要將一條消息發送到擴展的另一部分,則應該使用簡化的'runtime.sendMessage'或'tabs.sendMessage'。請檢查此文檔:https://developer.chrome.com/extensions/messaging。相關SO票:http://stackoverflow.com/questions/15888177/chrome-extension-sendmessage-error-from-content-script-to-background-html –