2009-06-24 3 views
1

현재 첫 번째 Firefox 확장 프로그램을 빌드 중이며 한 기능에 약간의 어려움이 있습니다. 툴바에서 버튼 클릭에 대한 응답으로 새 브라우저 탭을 열고 싶습니다. 새 탭에는 웹 페이지의 내용과 몇 가지 추가 버튼이 있어야합니다.툴바 확장 버튼에 대한 응답으로 xul 파일 열기

: 주요 myapptoolbar.xul에서 참조이 XUL 파일이 자바 스크립트를 통해 시작됩니다

<?xml version="1.0"?> 

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 

<window id="myapp-report-window" 
     title="Example 4.5.1" 
     xmlns:html="http://www.w3.org/1999/xhtml" 
     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 

    <script type="application/x-javascript" 
      src="chrome://myapp/content/main.js" /> 

    <toolbox> 
     <toolbar id="nav-toolbar"> 
      <toolbarbutton label="This-is-going-to-do-some-stuff"/> 
     </toolbar> 
    </toolbox> 

    <iframe id="myapp-report-frame" flex="1"/> 

    <script type="text/javascript"> 
     function loadPage(url){ 
      document.getElementById('myapp-report-frame').setAttribute('src',url); 
     } 
    </script> 
</window> 

: 나는 새 탭의 내용에 대해 별도의 XUL 파일을 생성 한 순간

gBrowser.selectedTab = gBrowser.addTab('chrome://myapp/content/report.xul'); 
var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.selectedTab); 
newTabBrowser.addEventListener("load", 
    function(){ 
     loadPage('http://www.somedynamicallysetwebsite.com'); 
    }, true); 

내가 가지고있는 문제는 loadPage 함수가 발견되지 않아서 iframe의 src 특성이 설정되지 않는다는 것입니다. 어리석은 범위 지정 문제 일 것이라고 확신하지만 파이어 폭스 확장 (2 일째!)에 익숙하지 않으므로 도움을 받으실 수 있습니다.

답변

0

본인은 새로운입니다. 파이어 폭스 확장에 대한 또 다른 질문을하려고했기 때문에 실제로 여기에 뒤로 비틀 거 렸지만 도움이 될 것 같아요.

음, loadpage 함수는 newtab.xul 내에서 선언되므로 myapptoolbar.xul에서 함수를 호출 할 수 없습니다. XUL 파일은 향상된 권한을 가진 HTML 파일이므로 비슷한 속성을 공유한다고 생각합니다. 당신은 app.js 내에서 함수를 선언 한 다음의 모두가 app.js이 같은 파일을 포함 할 수 있습니다 : - 어딘가에 상단에

<script type="application/x-javascript" src="chrome://app/content/app.js" /> 

장소를 바로 there.is.only 후. xul 라인이 좋을 것입니다. HTML 페이지에서 일반적으로하는 일을 수행하십시오.

이 정보가 도움이되기를 바랍니다. =) 확장에 행운을 빈다.

+0

죄송합니다. 더 자세히 읽었어야합니다. 이미 페이지에 자바 스크립트를 포함시키는 방법을 알고 있습니다. loadpage 함수를 main.js에 넣은 다음 newtab.xul과 maintoolbar.xul에 모두 include 할 수 있습니다. 미안합니다. 행운을 빕니다! =) – wai

0

결국 문제가 해결되었습니다. 범위 문제였습니다. GBrowser 속성을 통해 iframe에 액세스해야했습니다.

관련 문제