오버레이 xul에서 스크립트를로드 할 때 window/document에 액세스 할 수 있습니까? 그렇다면이 웹 페이지 콘텐츠에 어떻게 액세스 할 수 있습니까?
오버레이는 일반적으로 기본 브라우저 창인 browser.xul
에 적용됩니다. 로드하는 모든 스크립트는 브라우저 창 컨텍스트에서로드되며 이는 글로벌 변수 window
및 document
변수가 참조하는 것입니다. 현재 선택된 브라우저 탭은 gBrowser.contentWindow
및 gBrowser.contentDocument
(gBrowser
은 <tabbrowser>
element에 대한 참조입니다.)을 통해 액세스 할 수 있습니다.
@mozilla.org/moz/jssubscript-loader;1
스크립트 로더를 사용하여로드 된 xul, 팝업 및 스크립트에서로드 된 스크립트의 수명은 어떻게됩니까?
스크립트 로더는 스크립트를 loadSubScript()
의 두 번째 매개 변수로 지정된 컨텍스트에로드합니다. 이 매개 변수가 생략되면 호출자 컨텍스트에 스크립트가로드됩니다. 스크립트는 컨텍스트가 여전히 존재하는 한 적어도 주변에 머무를 것이고, 외부 참조가있는 경우에는 길어질 것입니다 (일반적으로 좋은 아이디어는 아닙니다).
차단되지 않은 팝업에서 웹 페이지의 콘텐츠에 액세스하는 가장 좋은 방법은 무엇입니까?
이것은 크게 "팝업"으로 간주됩니다. XUL 대화 상자? XUL <panel>
? 새 브라우저 창에서 열리는 웹 페이지?
감사합니다. 내 스크립트를 툴바 오버레이에 포함 시켰습니다. 스크립트 내에서 window.location.href에 액세스하려고하면 browser.xul을 가리 킵니다. 그러나 gBrowser.contentWindow를 사용하여 창에 액세스하고 gBrowser.contentDocument를 사용하여 문서에 액세스 할 수있었습니다. 하지만 이제 sendAsyncMessage()에 액세스 할 수 없습니다. 내 스크립트에서 sendAsyncMessage에 어떻게 액세스합니까? sendAsyncMessage를 사용하여 JSON 데이터를 내 팝업으로 보내려고합니다. 내 팝업은 XUL 패널입니다. –
@Vivek : 메시지 관리자 메소드입니다. ['gBrowser.selectedBrowser.messageManager'] (https://developer.mozilla.org/en-US/docs/XUL/browser#p-messageManager)를 사용하십시오. –