2014-03-07 47 views
0

我能夠做出一個工具欄按鈕具有以下..Firefox覆蓋如何操作HTML DOM?

<toolbarpalette id="BrowserToolbarPalette"> 
    <toolbarbutton id="myextension-button" 
    class="toolbarbutton-1" 
    image="chrome://xulschoolhello/skin/favicon.png" 
     oncommand="XULSchoolChrome.BrowserOverlay.doSomething(event);" 
    label="label" tooltiptext="tooltip" /> 
</toolbarpalette> 

當我打電話「文件」對象的doSomething的功能,我相信它的操縱XUL DOM,而不是HTML網頁。如何在我的函數doSomething中訪問HTML網頁的內容?由於

回答

1

或者你可以只是去:

<toolbarpalette id="BrowserToolbarPalette"> 
    <toolbarbutton id="myextension-button" 
    class="toolbarbutton-1" 
    image="chrome://xulschoolhello/skin/favicon.png" 
     oncommand="gBrowser.contentDocument.body.innerHTML='rawr'" 
    label="label" tooltiptext="tooltip" /> 
</toolbarpalette> 

而是內嵌窗口內的按需你可以做gBrowser.contentDocumentgBrowser.contentWindow訪問DOM在當前選項卡中的瀏覽器。

+1

我注意到你接受了這個解決方案。僅供參考gBrowser是鉻窗口對象上的一個屬性,所以它真的是'window.gBrowser',但是因爲您已經在該範圍內,所以您可以僅使用gBrowser。所以只是一個FYI。 – Noitidart

+0

謝謝!作爲一名新開發者。兩個簡單的問題。你怎麼知道這樣的具體內容是「gBrowser.contentDocument」屬性。我在MDN上沒有遇到任何關於此的教程。我的第二個問題是,如果我想在當前頁面中注入一個名爲「test.js」的腳本,該怎麼辦?再一次,你是一個救星。 – blee908

+1

do'console.log('blah =',OBJECT_HERE'的變量視圖)'並用類似窗口填寫OBJECT_HERE,然後打開瀏覽器控制檯,你會看到一條消息,比如''blah的變量視圖「」[object ChromeWindow] 「'點擊」對象ChromeWindow「,它將在VariableViewer中打開它,並且您可以看到該對象中的每個屬性。 Img [HERE](http://img.photobucket.com/albums/v135/noitidart/my20code20works_zpsdd244f45.png)和[HERE](http://img.photobucket.com/albums/v135/noitidart/i20dont20see20nsIInterfaceRequestor_zps7bfc9d43.png)顯示不同對象的變量視圖示例 – Noitidart

1

它肯定是在Chrome範圍

doSomething = function(event) { 
var DOMWindow = event.originalTarget.defaultView; //this should be the chrome window 
//however if its not then do var DOMWindow = Services.wm.getMostRecentWindow('navigator:browser'); //make sure to import Services.jsm 

var HTMLWindow = DOMWindow.gBrowser.selectedTab.linkedBrowser.contentWindow; //might be _linkedBrowser 
} 
+0

我想要的是當用戶單擊工具欄按鈕可以修改文檔。關鍵字「窗口」是否已經訪問HTML窗口? – blee908

+0

否,從該範圍它是鉻xul窗口。 – Blargh