我很难理解如何在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 –