2012-02-05 34 views
1

這也許是同一部分下的「內容不能識別的變量」的副本。我從那個問題的答案中得到了部分查詢。是的,我知道在addon上下文中訪問contentScript變量,反之亦然?

內容腳本上下文與插件腳本上下文完全斷開連接。內容腳本是在文檔的上下文中運行的,而附加腳本則不是。

但這是否意味着我們永遠不能在插件腳本上下文中訪問內容腳本上下文中的變量?如果以任何方式我們可以訪問它們,請讓我知道。我的需求需要將對象作爲參數發送給另一個腳本(data/utilities.js)中的函數,並可能獲取返回的對象。在做前者方面沒有任何困難,但我堅持前述背景問題的後者。我能夠從內容腳本上下文返回值,但無法在插件上下文中訪問相同的值。任何人都可以請幫助我一個這樣的小例子?

PS我可以在那裏討論它,但我讀到,我不應該因爲這不是一個論壇。

回答

1

您無法直接從插件腳本上下文直接訪問內容腳本中的變量。

:您 可以使用

self.port.emit('send-some-var', some_var)

你會再通過監聽相同的事件接收的附加腳本變量的值傳遞變量回到附加從內容腳本

worker.port.on('send-some-var', function(data) { console.log(data) })

但是,主要的限制是傳遞的數據必須是JSON序列化的,所以你不能有方法等複雜的對象。

+0

我已經看過這段代碼,但不明白它當時的實際情況。無論如何,我會試試看。 – mystarrocks 2012-02-07 04:58:43

+0

編輯:>你必須確保有效載荷可以序列化爲JSON。這意味着它需要是一個字符串,數字,布爾值,空值,JSON序列化值的數組,或者其屬性值本身是JSON序列化的對象。這意味着你不能發送函數,如果對象包含方法,它們將不會被編碼。正如你所說,這是來自API。所以沒有辦法將data/util.js中的方法的值返回到addon上下文中? – mystarrocks 2012-02-07 06:05:44

+0

沒有直接的方式,沒有。您需要如上所述發送數據。 – canuckistani 2012-02-08 14:50:09

相關問題