代码之家  ›  专栏  ›  技术社区  ›  blee908

Firefox Overlay如何操作HTML DOM?

  •  0
  • blee908  · 技术社区  · 10 年前

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

    <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 回复  |  直到 10 年前
        1
  •  1
  •   Noitidart    10 年前

    或者,你可以直接去:

    <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中的window,您可以只执行 gBrowser.contentDocument gBrowser.contentWindow 以访问当前选项卡中浏览器的DOM。

        2
  •  1
  •   Blargh    10 年前

    它肯定在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
    }