2011-07-08 42 views
1

從Firefox擴展是有辦法讓XUL的iframe /瀏覽器包含內容的HTML窗口XUL iframe中。注意我不問如何獲取當前瀏覽器(gBrowser)或browser.xul窗口。我有目標/內容HTML窗口句柄,我想跟隨它在XUL樹(包含它的XUL元素)。如何獲得引用包含窗口

getting-a-reference-to-the-parent-iframe建議對於HTML iframe,您需要遍歷所有iframe以找到合適的iframe,但我想知道是否存在某種Firefox特定方式訪問包含XUL iframe(來自特權/擴展代碼)。

回答

1
aWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor) 
     .getInterface(Components.interfaces.nsIWebNavigation) 
     .QueryInterface(Components.interfaces.nsIDocShell) 
     .chromeEventHandler 

注意,在Firefox 3.6和以前這個返回XPCNativeWrapper你那麼可能需要解開。

+0

嗨@Neil,我還沒有機會測試尚未本,但它看起來非常有前途。一旦我做到,我會回到這裏。 – studgeek

0

從擴展的角度來看,「窗口」是Firefox的頂級鉻窗口,包含按鈕,工具欄等的特殊< hbox>和< hbox>元素。您可以在DOM Inspector中查看這些元素if你去文件 - >檢查鉻文件 - >(瀏覽器窗口)。要從擴展程序的Javascript獲取當前頁面框架,請使用content

要獲得外窗,使用window.parent,或window.parent.top。如果內部文檔是chrome特權的,也許可以在窗口級別檢查特殊屬性或變量。

+0

謝謝,我希望做相反。我有一個「內容」,我想知道哪個XUL瀏覽器/ iframe持有它。我更多地更新了我的問題,希望更清楚。 – studgeek

0

在擴展中,您的代碼通常已經在主窗口中執行,因此您只需使用gBrowser(請參閱https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_main_window)。

如果你的代碼在不同的窗口中運行則窗口調解員是你的朋友:https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_a_dialog

+0

謝謝,但我期待的樹從內容HTML窗口向上移動,不要讓當前窗口XUL(gBrowser)或另找XUL窗口。除非調解員做了我失蹤的事情?我更多地更新了我的問題,希望更清楚。 – studgeek

+0

看起來像我誤解了。見http://stackoverflow.com/questions/6484823/finding-the-tab-associated-with-a-dom-window/6489272#6489272然後。 –