2016-03-03 164 views
0

我很難理解如何在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); 
}) 

任何幫助或方向在這裏將不勝感激。多謝你們!

+0

如果您的內容腳本被注入,您輸入的代碼應該有效。我不能正確理解你的問題陳述。你不確定腳本是否被注入? –

+0

根據我的理解,你想發送消息到後臺頁面。如果您只需要將一條消息發送到擴展的另一部分,則應該使用簡化的'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 –

回答

2

您發送的郵件爲String,您的郵件應該是一個對象,否則它會將您的第一個參數視爲擴展名。 閱讀here

試試這個:

chrome.runtime.sendMessage({buttonID: button.id});

,然後在接收端:

alert(response.buttonID);

它應該工作。

我希望這會有所幫助。

+0

謝謝!這肯定有幫助。另外,我輸入了findElemendById,這不是一個方法大聲笑(雙facepalm)。現在它已經全部修復了,現在我正在解析字符串來處理響應的部分。 – Jay

+0

@Jay Great。祝你好運。如果問題解決了,你可以放棄並接受答案。 –

+0

我沒有足夠的聲望來點贊,但我確實嘗試過。一旦我有足夠的代表,我會回到帖子,並做到這一點:D – Jay

相關問題