創建瀏覽器擴展,我必須從background.js打開新選項卡並將JSON數據傳遞到此新選項卡。在新選項卡中,我使用傳遞的JSON數據操作/呈現DOM。鉻擴展 - 將數據從背景傳遞到自定義html頁面
下面是我background.js,我創造新的選項卡自定義網址和發送JSON數據對象
....
var analyticsUrl = chrome.extension.getURL("analytics.html");
chrome.tabs.create({ url: analyticsUrl, selected: true }, sendDataToAnalytics);
function sendDataToAnalytics(tab)
{
console.log(JSON.stringify(txnDataJSON));
chrome.tabs.sendMessage(tab.id, {"action" : "renderChartsTxns", "txns" : JSON.stringify(txnDataJSON)});
}
....
我定製analytics.html頁面有
<script src="analytics.js" type="text/javascript"></script>
和analytics.js的一部分看起來像下面
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if(request.action == "renderChartsTxns")
{
// JSON parsing and analytics.html DOM processing
});
問題是,我的analytics.js監聽器從來沒有收到任何消息先賢。我已經確認background.js正在按預期發送JSON消息(使用後臺頁面調試)
BTW,analytics.js/html未註冊爲manifest.json文件的一部分,但這些文件是擴展包的一部分。
今天早上我做了這個設置,一切都正常工作了幾個小時(能夠在analytics.js中接收JSON數據),不知道以後發生了什麼變化,並且我在analytics.js中丟失了消息接收(用於調試我嘗試過清除瀏覽器緩存,卸載並重新安裝Chrome以及更多,但沒有運氣!)
謝謝Xan,你能提供一些例子嗎? – Rushik
@Rushik提供(不得不修復我使用的'sendMessage',對不起) – Xan
像魅力一樣工作! :)謝謝Xan! – Rushik