2015-12-21 19 views
0

我正在編寫一個Firefox插件使用新的SDK,做5個非常簡單的工作。它們大致相關,所以我寧願使用一個下拉菜單的單個插件,而這個插件在Panel中已經實現。火狐插件與面板 - 操縱當前文檔

我正在通過新的SDK文檔工作,但無法找到直接解決方案。我發現我可以添加一個面板,但是我看不到如何操作當前選項卡中的文檔。

這是可能的,不是嗎?使用全局document不可能像面板一樣工作,或者至少不是我正在查看的文檔。

那麼,如何從插件面板訪問文檔?

感謝

+0

現在有兩種不同的東西可以被稱爲SDK的Firefox附加組件。這將有助於清楚你正在使用哪個。較舊的稱爲[附加SDK](https://developer.mozilla.org/en-US/Add-ons/SDK)。通常情況下,它會被假定爲你正在談論的那個(這將與你使用的標籤一致)。但是,在這一點上,它不會被視爲「新」。 * new * one是「[WebExtensions](https://developer.mozilla。org/en-US/Add-ons/WebExtensions)「。你說」新「兩次。你在談論附加SDK或WebExtensions嗎? – Makyen

回答

2

簡短的回答你的問題是,你不會從你的主JavaScript代碼訪問的網頁內容。您使用Content Scripts與瀏覽器選項卡中的文檔(網頁內容)交互。您可以擁有內容腳本pass messages to your main script

MDN summarizes使用內容腳本與SDK如下的校長:

內容腳本可以是使用SDK 的比較混亂的一個方面,但你很可能不得不使用他們。有 五項基本原則:

  • 該加載項的主要代碼,包括「main.js」和「LIB」等模塊,可以使用SDK high-levellow-level的API,但 無法訪問Web內容直接
  • 內容腳本can't use the SDK's APIs(沒有進入全局出口,需要),但可以訪問網頁內容使用的內容腳本,像page-modtabs
  • SDK的API,提供功能,從而使附加的主代碼 負載內容腳本到網頁
  • 內容腳本可以以字符串的形式加載,但更多的時候是作爲單獨的文件存儲在加載項的「數據」目錄下。 jpm 默認不會創建「數據」目錄,所以您必須添加它並將 您的內容腳本放在那裏。
  • 消息傳遞API允許主代碼和內容腳本相互

溝通,你會究竟怎麼做你是想不清楚,因爲你沒有提供你一個明確的說明是做。但是,它幾乎聽起來像你可以使用context-menu實現你想要的。上下文菜單是將內容腳本附加到當前標籤的方法之一,並可能爲您提供下拉菜單,您可以根據需要(儘管它是上下文菜單的一部分,而不是下拉菜單)。