Проблема панели инструментов Firefox XUL с использованием JavaScript getElementById - PullRequest
3 голосов
/ 22 января 2010

Я пишу свою первую панель инструментов Firefox XUL и получаю странное поведение - для отладки своего кода я вызываю одну и ту же функцию js из панели инструментов Firefox и из кнопки на очень простом HTML-файле, который я создал ,
Функция javascript отображает окно предупреждения, получает элемент, используя document.getElementById, меняет его цвет и отображает другое окно предупреждения.
Функция javascript хорошо работает при вызове с помощью кнопки HTML, но при использовании кнопки на панели инструментов «document.getElementById» возвращает ноль, и функция завершается (отображается только первое окно предупреждения).

Есть догадки, что может быть не так? Я предоставляю (очень простой) код ниже для refenrece.

Большое спасибо заранее!



Файл javascript - facebrew.js

function FaceBrew_rtlSelection () { предупреждение ( 'Перед!'); sel_node = document.getElementById ("header"); sel_node.style.color = 'blue'; предупреждение ( 'После!'); }

Файл HTML (без начального пробела)

<! DOCTYPE HTML PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow noreferrer">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<голова> Test

<тело>

Файл XUL - facebrew.xul

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

<toolbox id="navigator-toolbox">
    <toolbar id="FaceBrew-Toolbar" toolbarname="FaceBrew Toolbar" accesskey="F"
             class="chromeclass-toolbar" context="toolbar-context-menu" 
             hidden="false" persist="hidden">
        <toolbaritem flex="0">            
            <toolbarbutton id="FaceBrew-Web-Button" tooltiptext=""
                           label="Run" oncommand="FaceBrew_rtlSelection()" />
        </toolbaritem>
    </toolbar>
</toolbox>

Файл CSS - facbrew.css

FaceBrew-Web-Button {

list-style-image: url("chrome://facebrew/skin/web.png");

}

Ответы [ 2 ]

2 голосов
/ 24 января 2010

Как сказал Пол, когда функция вызывается из панели инструментов, контекст документа отличается. получить выбранный в данный момент объект документа HTML с помощью:

var doc = gBrowser.selectedBrowser.contentDocument;
doc.getElementById(...);

также вы всегда можете взглянуть на консоль ошибок, чтобы понять, почему ваш код не работает ( Сервис -> Консоль ошибок ).

1 голос
/ 24 января 2010

Ваша панель инструментов наложена, поэтому контекст (документ и окно) - browser.xul, а не ваш HTML-файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...