2013-11-28 359 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; 
}); 
相關問題