2016-05-23 44 views
0

我需要將打包Chrome應用程序的消息發送至應用程序外部的網頁。我沒有問題,使用需要將Chrome瀏覽器打包的應用程序發送至網頁

chrome.runtime.sendMessage(extID,toSend, function(response) { 
    console.log("messag sent to " + extID); 
    if(response){ 
    console.log(response.received); 
    } 
    else { 
    console.log("no reply"); 
    }; 
}); 

我能得到的答覆從打包應用程序回從網頁將消息發送到封裝應用。沒問題。但我需要繼續從應用程序發送信息到單個回覆以外的頁面。

我試圖在應用程序方面使用此代碼:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
    chrome.tabs.sendMessage(tabs[0].id, msg, function(response) { 
    console.log(response.farewell); 
    }); 
    }); 
} 

但它不承認chrome.tabs爲有效對象。當我向manifest.json的權限部分添加:「選項卡」時,它告訴我打包的應用程序不支持選項卡權限。

那麼有沒有辦法將Chrome打包應用中的消息發送到外部網頁,而不是簡單響應從頁面本身發送的消息?

+0

chrome-app或chrome-extension? –

+0

我的程序是一個Chrome應用程序。我需要訪問串行端口,所以我不能使用擴展。 –

回答

0

您需要在清單externally_connectable中包含您要發送的網站域,並且您需要使用chrome.runtime.onMessageExternal或chrome.runtime.onConnectExternal這些都在documentation中。

+0

謝謝,kzahel。我應該澄清,我確實可以在清單中進行外部連接,並且我能夠接收並回復發送到網頁的消息。我也研究過使用runtime.connect和onConnectExternal,但是這些文檔似乎表明這隻適用於擴展,而不適用於打包的應用程序。無論如何,我想要做的是從應用程序發送消息到網頁,而不是簡單地迴應從網頁發送的消息。 –

+0

我的意思是我可以接收並響應從網頁發送到應用程序的消息。 –

+0

現在仔細查看runtime.connect。這可能工作。 –

相關問題