chrome扩展从内容脚本发送消息到

时间:2013-11-28 19:21:03

标签: google-chrome

我有一个Chrome扩展程序,可以为每个Chrome标签动态创建一个iframe并添加按钮。 来自background.js我发送消息到content.js

chrome.tabs.sendMessage(tabs[0].id, {action: "load_ifram~"+id}, function(response) {});

content.js:

chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
split_message = msg.action.split("~");
if (split_message[0] == 'load_ifram') {     
var id = split_message[1];
var height = '35';
var iframe = document.createElement('iframe');      
iframe.src = chrome.extension.getURL('toolbar1.html');
document.documentElement.appendChild(iframe);
}
});

toolbar1.html

<!DOCTYPE html>
<html>
<head>  
<script type="text/javascript" src="test.js"></script>
</head>
<body>
    <input type="text" name="value" id="value" value=""/>       
    <button id="p_button" style="float:right;line-height:15px;margin-top:-1px;font-family:century gothic;">Click ME</button>
</body>

test.js:

document.addEventListener('DOMContentLoaded', function () {
var p_status = document.querySelector('#p_button');
if(p_status ){  
    p_status.addEventListener('click', p_open);
}
});

在content.js中,我从background.js获取id。这个id应该是我按钮的值(点击ME + id)。此外,我想在我的按钮单击功能(p_open())中使用此ID。我怎样才能做到这一点?请帮忙!!提前致谢

1 个答案:

答案 0 :(得分:1)

Chrome提供chrome.storage,我们可以通过该存储将值从后台脚本传递到内容脚本和其他js。

要实现这一点,我们需要先更新清单权限     “权限”:[     “存储”]

//to set the storage in background script
chrome.storage.local.set({'id': myid}, function() {});
chrome.storage.local.set({'name': myname},function() {});

//retrive the storage value in other js file
chrome.storage.local.get('id', function (result) {
id= result.id;
});
chrome.storage.local.get('name', function (result) {
name= result.name;
});
chrome.storage.local.get('myname', function (result) {
myname= result.myname;
});