2014-03-07 3 views
0

나는 .. 다음과 같이 도구 모음 단추를 만들 수 있었다 Firefox Overlay는 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> 

나는 해봐요 함수에서 "문서"개체를 호출

, 나는 그는 XUL DOM이 아닌 HTML 웹 페이지를 조작 믿습니다. 내 함수 doSomething에서 HTML 웹 페이지의 내용에 어떻게 액세스합니까?

대신 인라인 내부 창의
<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> 

은 그냥 DOM에 액세스 할 수 gBrowser.contentDocument 또는 gBrowser.contentWindow을 할 수있는 요구시 작동 : 감사

답변

1

그냥 갈 수 크롬의 범위에 현재 탭에있는 브라우저의

+1

해결책을 수락했습니다. 참고로, gBrowser는 크롬 창 객체의 속성이므로 실제로는 'window.gBrowser'이지만 이미 해당 범위에 있으므로 gBrowser로 이동할 수 있습니다. 그래서 단지 FYI. – Noitidart

+0

감사합니다! 새로운 개발자로서. 두 가지 빠른 질문. 도대체 어떻게 "gBrowser.contentDocument"속성과 같은 것을 알 수 있습니까? 나는 이것에 대해 나에게 이야기 해준 MDN의 튜토리얼을 전혀 보지 못했다. 두 번째 질문은 "test.js"라는 스크립트를 현재 페이지에 삽입하려면 어떻게해야할까요? 다시 한번, 당신은 생명의 은인입니다. – blee908

+1

'console.log ('blah =', OBJECT_HERE의 변수보기 ')'를 실행하고 같은 창으로 OBJECT_HERE을 채운 다음 브라우저 콘솔을 열면 'blah의 변수보기'와 같은 메시지가 표시됩니다. "[object ChromeWindow] "''ChromeWindow 객체 '를 클릭하면 VariableViewer에서 열리 며 해당 객체의 모든 속성을 볼 수 있습니다. Img [여기] (http://img.photobucket.com/albums/v135/noitidart/my20code20works_zpsdd244f45.png) 및 [여기] (http://img.photobucket.com/albums/v135/noitidart/i20dont20see20nsIInterfaceRequestor_zps7bfc9d43.png) 다른 개체에 대한 변수보기의 예를 보여줍니다 – Noitidart

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 
} 
+0

사용자가 도구 모음 단추를 클릭하여 문서를 수정할 수있는 경우를 원합니다. 키워드 "window"가 이미 HTML 창에 액세스하지 않습니까? – blee908

+0

해당 범위에서 아니요 Chrome xul 창입니다. – Blargh

관련 문제