2012-11-21 5 views
0

Firefox 확장 프로그램의 컨텍스트와 관련된 몇 가지 쿼리가 있습니다.Firefox 확장 프로그램에서 스크립트의 컨텍스트

  1. 오버레이 xul에서 스크립트를로드 할 때 window/document에 액세스 할 수 있습니까? 그렇다면이 웹 페이지 콘텐츠에 어떻게 액세스 할 수 있습니까?
  2. @mozilla.org/moz/jssubscript-loader;1 스크립트 로더를 사용하여로드 된 xul, popup 및 scripts에서로드 된 스크립트의 수명은 어떻게됩니까?
  3. 차단되지 않은 팝업에서 웹 페이지의 콘텐츠에 액세스하는 가장 좋은 방법은 무엇입니까?

답변

1

오버레이 xul에서 스크립트를로드 할 때 window/document에 액세스 할 수 있습니까? 그렇다면이 웹 페이지 콘텐츠에 어떻게 액세스 할 수 있습니까?

오버레이는 일반적으로 기본 브라우저 창인 browser.xul에 적용됩니다. 로드하는 모든 스크립트는 브라우저 창 컨텍스트에서로드되며 이는 글로벌 변수 windowdocument 변수가 참조하는 것입니다. 현재 선택된 브라우저 탭은 gBrowser.contentWindowgBrowser.contentDocument (gBrowser<tabbrowser> element에 대한 참조입니다.)을 통해 액세스 할 수 있습니다.

@mozilla.org/moz/jssubscript-loader;1 스크립트 로더를 사용하여로드 된 xul, 팝업 및 스크립트에서로드 된 스크립트의 수명은 어떻게됩니까?

스크립트 로더는 스크립트를 loadSubScript()의 두 번째 매개 변수로 지정된 컨텍스트에로드합니다. 이 매개 변수가 생략되면 호출자 컨텍스트에 스크립트가로드됩니다. 스크립트는 컨텍스트가 여전히 존재하는 한 적어도 주변에 머무를 것이고, 외부 참조가있는 경우에는 길어질 것입니다 (일반적으로 좋은 아이디어는 아닙니다).

차단되지 않은 팝업에서 웹 페이지의 콘텐츠에 액세스하는 가장 좋은 방법은 무엇입니까?

이것은 크게 "팝업"으로 간주됩니다. XUL 대화 상자? XUL <panel>? 새 브라우저 창에서 열리는 웹 페이지?

+0

감사합니다. 내 스크립트를 툴바 오버레이에 포함 시켰습니다. 스크립트 내에서 window.location.href에 액세스하려고하면 browser.xul을 가리 킵니다. 그러나 gBrowser.contentWindow를 사용하여 창에 액세스하고 gBrowser.contentDocument를 사용하여 문서에 액세스 할 수있었습니다. 하지만 이제 sendAsyncMessage()에 액세스 할 수 없습니다. 내 스크립트에서 sendAsyncMessage에 어떻게 액세스합니까? sendAsyncMessage를 사용하여 JSON 데이터를 내 팝업으로 보내려고합니다. 내 팝업은 XUL 패널입니다. –

+0

@Vivek : 메시지 관리자 메소드입니다. ['gBrowser.selectedBrowser.messageManager'] (https://developer.mozilla.org/en-US/docs/XUL/browser#p-messageManager)를 사용하십시오. –

관련 문제