2016-03-03 151 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

相关问题