2012-01-08 181 views
1

有沒有一種方法可以實現chrome擴展中所有內容腳本只有且僅有一個websocket連接?Chrome擴展中所有內容腳本的一個websocket連接

由於內容腳本不能使用由其擴展頁面定義的變量或函數,因此就我所知沒有辦法。

爲什麼只有一個websocket連接?因爲打開一個websocket連接是一個相對昂貴的過程,特別是如果你一次又一次地執行它。

回答

5

也許我誤解你,但我認爲這是解決方案:

  1. 在後臺頁面打開的WebSocket。
  2. 創建Port後臺頁面和內容腳本之間的連接。
  3. 通過發送和端口接收JSON按摩和WebSocket的
+0

感謝。事實上,我嘗試了類似的東西,但我想這個問題是關於加載一個擴展頁面(使用jquery的加載函數),然後調用其中的內容腳本:)現在我意識到它...我會再次嘗試這種方法,適當的實現。 – 2012-01-08 21:26:06

+0

你是什麼意思的「端口連接」?我有一個websocket在我的後臺腳本中實例化,但它並不總是加載。如果我刷新頁面,它不會連接。有時它會。我不知道如果background.js加載一次在Chrome啓動或什麼。我需要實例化我的content_scripts加載時,但在background.js – chovy 2015-01-27 09:02:23

+0

@chovy背景頁面啓動一次Chrome開始時,它無限期地運行(驚喜!)的背景。當Chrome訪問頁面時,它會檢查所有清單應該運行的內容腳本。內容腳本可以在執行過程中執行許多操作,即連接到其後臺頁面。端口是內容腳本和其背景頁面之間的連接 - 它們不能直接通信,因爲它們在不同的上下文中執行。 – hamczu 2016-02-24 15:39:11

相關問題