私は最初の Firefox XUL ツールバーを書いていますが、奇妙な動作をしています。コードをデバッグするために、Firefox ツールバーと作成した非常に単純な HTML ファイルのボタンの両方から同じ js 関数を呼び出します。
JavaScript 関数は警告ウィンドウを表示し、「document.getElementById」を使用して要素を取得し、その色を変更して、別の警告ウィンドウを表示します。
JavaScript 関数は、HTML ボタンを使用して呼び出すとうまく機能しますが、ツールバー ボタンを使用すると、「document.getElementById」は null を返し、関数は終了します (最初のアラート ウィンドウのみが表示されます)。
何が間違っていると思いますか?refenrece の (非常に単純な) コードを以下に示します。
よろしくお願いします!
JavaScript ファイル - facebrew.js
function FaceBrew_rtlSelection() {
alert('Before!');
sel_node = document.getElementById("header");
sel_node.style.color = 'blue';
alert('After!');
}
HTML ファイル
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
<script type="text/javascript" src="http://localhost/Sandbox/FaceBrew/chrome/content/facebrew.js"> </script>
</head>
<body>
<input type="button" value="Click me" id="select" onclick="FaceBrew_rtlSelection()" />
<div id="header">
<h1>Hello world!< /h1>
</div>
</body>
</html>
XUL ファイル - facebrew.xul
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://facebrew/skin/facebrew.css" type="text/css"?>
<overlay id="FaceBrew-Overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.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>
</overlay>
CSS ファイル - facbrew.css
#FaceBrew-Web-Button {
list-style-image: url("chrome://facebrew/skin/web.png");
}