![](/img/trans.png)
[英]how to access a firefox extension variable from the current document/window
[英]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.