2017-06-01 52 views
0

我正在構建一個Chrome擴展,以集成2個Web應用程序通過REST API調用共享數據。問題是一個站點(我正在顯示數據)在HTTPS上,另一個在HTTP上,所以我的內容腳本不會執行從HTTPS到HTTP站點的AJAX GET請求。對於解決方法,我使用background.js頁面來完成所有對HTTP站點的調用,然後使用chrome.storage,我將信息傳回帶有API結果的內容腳本。Chrome擴展功能結果從background.js到內容腳本準備就緒

到目前爲止,它一直工作得很好,但現在我想要點擊一個按鈕,我插入到HTTPS站點中,該站點調用background.js來獲取一些數據,並在完成時將其返回給內容腳本。問題是我不知道如何在內容腳本嘗試執行chrome.storage.sync.get調用來獲取返回的數據之前等待background.js調用完成。

我一直在想我需要一個像回調函數的東西,但我不知道如何包圍我的頭,我不知道這是我甚至需要的東西。任何幫助,將不勝感激!

+1

看[這裏](https://stackoverflow.com/questions/11431337/sending-message-to-chrome-extension-從網頁)和[這裏](https://developer.chrome.com/extensions/messaging) – AvrilAlejandro

+1

感謝@avrilalejandro經過幾次嘗試後,我成功地使用了這種方法! – ACCFAN

回答

0

爲了幫助人在那裏尋找同樣的事情,我最終使用:

在Background.js

內容腳本
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) { 
    chrome.tabs.sendMessage(tabs[0].id, { greeting: "hello" }, function (response) { 
      console.log(response.farewell); 
    }); 
}); 

https://developer.chrome.com/extensions/messaging

chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) { 
    console.log(sender.tab ? 
    "from a content script:" + sender.tab.url : 
    "from the extension"); 
    if (request.greeting == "hello") 
    sendResponse({ farewell: "goodbye" }); 
}); 

更多