2013-11-28 153 views
0

我有一个铬扩展名,它动态地为每个铬选项卡添加一个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

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; 
}); 
相关问题