簡體   English   中英

Firefox擴展:從側邊欄訪問主文檔

[英]Firefox extension: Access to main document from sidebar

我是編寫Firefox擴展的新手,我正在嘗試創建一個側邊欄,用於搜索主文檔中的某些元素,並在側邊欄中顯示有關它們的信息。 我按照這里的說明創建了沒有問題的側邊欄。

我現在遇到的問題是訪問sidebar.js文件中的主窗口或文檔。

這里的文檔說要使用

var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIWebNavigation)
                   .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                   .rootTreeItem
                   .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIDOMWindow);

但這給了我這個錯誤:

TypeError:window.QueryInterface不是函數

我收到了警告:

不推薦使用Components對象。 它很快就會被刪除。

這讓我覺得即使上面的代碼對我有效,它也不是最好的方法。

錯誤消息表明您的代碼在無特權的javascript上下文中運行。 .QueryInterface()是XPCOM代碼,即訪問僅適用於特權代碼的內部瀏覽器組件。

通常不建議對“葉子內容”(由插件產生的窗口/側邊欄)進行直接控制。 相反,您的插件主代碼應該協調各個視圖。 你的側邊欄應該是愚蠢的,只需將消息傳遞給插件代碼,然后插件就可以修改選項卡的內容。

由於e10s瀏覽器的各個部分可能最終在未來的單獨進程中運行,並且不會彼此直接訪問。

如果您沒有使用addon-sdk進行開發 - 它設計了消息傳遞作為將組件粘合在一起的主要方式 - 您將不得不使用消息管理器將您的插件,側邊欄和內容腳本連接在一起。

使用tabs.create()| MDN如:

browser.tabs.create({url:"https://www.google.com"});

我也使用了那個文檔,我也遇到了這個錯誤。 文檔太舊了。

browser.tabs.create({url:“ https://www.google.com ”})可以正常使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM