Firefox Overlay如何操作HTML DOM?

时间:2014-03-07 01:08:08

标签: firefox firefox-addon xul

我能够使用以下内容制作工具栏按钮。

<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函数中调用“document”对象时,我相信它操纵的是XUL DOM,而不是HTML网页。如何在我的函数doSomething中访问HTML网页的内容?感谢

2 个答案:

答案 0 :(得分:1)

它肯定在镀铬范围

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
}

答案 1 :(得分: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>

代替内联oncommand中的窗口,您只需执行gBrowser.contentDocumentgBrowser.contentWindow即可访问当前标签中浏览器的DOM。