Открытие файла xul в ответ на нажатие кнопки расширения панели инструментов - PullRequest
1 голос
/ 24 июня 2009

В настоящее время я создаю свое первое расширение для Firefox, и у меня возникли небольшие трудности с одной функциональностью. Я хотел бы открыть новую вкладку браузера в ответ на нажатие кнопки на панели инструментов. Новая вкладка должна содержать содержимое веб-страницы вместе с некоторыми дополнительными кнопками.

На данный момент я создал отдельный файл 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 запускается через этот javascript, на который ссылается основной myapptoolbar.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 не найдена, поэтому атрибут src в iframe никогда не устанавливается. Я уверен, что это какая-то глупая проблема с областями видимости, но я очень плохо знаком с расширениями Firefox (день 2!), Поэтому любая помощь будет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 26 июня 2009

Я исправил это в конце - это была проблема с областью действия. Мне пришлось получить доступ к iframe через свойство GBrowser.

0 голосов
/ 25 июня 2009

Я новичок в этом сам. На самом деле я наткнулся здесь, потому что я пытался задать еще один вопрос о расширении Firefox, но думаю, что смогу помочь.

Хм, ваша функция загрузки страницы объявлена ​​в 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-страницей.

Надеюсь, это поможет. =) Удачи тебе в расширении!

...