2017-05-29 74 views
2

我的內容腳本和我的測試回顯擴展的後臺腳本之間的通信基於browser.runtime.connect。我在github上發佈了我的代碼和擴展包。Microsoft Edge中的內容腳本和後臺腳本之間的通信

此擴展的簡短說明。您可以在this GitHub test page上運行擴展。內容腳本使用browser.runtime.connect連接到後臺腳本,並通過發送消息browser.runtime.Port當單擊「提交」按鈕時的對象。後臺腳本接收消息,將其轉換爲大寫併發回。然後,內容腳本接收修改的消息並將其顯示在頁面上(收到的消息字段)。

當我將它添加到邊緣時,此擴展可以正常使用加載擴展按鈕,如Microsoft Edge文檔中所述。因此,如果您打開測試頁加載的擴展名,您應該看到「HELLO FROM BACKGROUND SCRIPT」文本中的收到消息字段

但有如果本擴展從軟件包安裝 所以,你可以嘗試一個奇怪的問題...延長不工作,直到我打開這個擴展的背景頁面並重新加載測試頁 ...重現:

  1. 從包裝
  2. 打開測試頁安裝這個擴展。後臺腳本無法正常工作(收到的消息字段爲空),並且此腳本未收到已發送的消息...頁面重新加載或關閉\擴展名不起作用。
  3. 打開後臺頁面這個擴展。那麼這個頁面可能會被關閉。
  4. 刷新測試頁
  5. 擴展開始正常工作...

:本次測試擴展是基於MDN(不好意思公佈runtime.connect例子,但我可以不要插入兩個以上的鏈接...)。

你能幫我解決這個問題嗎?也許我錯過了文檔中的某些東西...

+0

我也曾經遇到這個問題,對於appx包,後臺頁面不會加載,直到您手動檢查它。鼓勵在這裏提出一個錯誤https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/ –

+0

@HaibaraAi感謝您的評論。現在我知道其他開發者也有同樣的問題。我四天前提出了這個錯誤https://developer.microsoft。com/en-us/microsoft-edge/platform/issues/12156180 /但我仍然沒有收到回覆......看來這個過程並不快。你能將這個錯誤標記爲可重現的嗎?我的意思是,你可以推**我嗎?也許這將有助於加快這個錯誤報告處理... –

+0

感謝提高錯誤!我upvoted:) –

回答

1

這是由於您的擴展清單指定的持久標誌爲false而設計的。在Microsoft Edge上,後臺腳本的默認行爲是非持久性的。

+0

謝謝你的答案!我已將持久性屬性值設置爲true,因此即使從包中安裝擴展,擴展也能正常工作。但是,仍然...加載非持久背景頁面的正確方法是什麼?例如在谷歌瀏覽器上,這個頁面將爲每個新版本的擴展程序加載一次。之後,它只會被加載以提供您已註冊的事件([文檔](https://developer.chrome.com/extensions/event_pages))。 –

相關問題