オブジェクトを不用意にグローバルスコープで定義しないようにします。同一のXULにオーバーレイした複数のXULがあるとき、そこで実行されるスクリプトは同一のスコープを持つため、他のアドオンと干渉することがあります。
XULでスクリプトを使用するには、
の2つの方法があります。
スクリプト ファイルをXULに読み込むには、script要素を利用して
<script type="application/x-javascript" src="sample.js" />
とするか、これにバージョン指定を付加して、
<script type="application/x-javascript;version=1.7" src="sample.js" />
のようにします。
XUL文書中にスクリプトを記述するならば、インライン スクリプトとして、
<script type="application/x-javascript"><![CDATA[ ]]></script>
のように記述します。
ちなみにtype属性は「application/javascript」を指定するようにドキュメントに記述されています。しかし既存アドオンのソースを調べたところ、「application/x-javascript」を指定している例が多数でした。
XUL要素のイベントについては、イベントハンドラで解説しています。
command要素では、他のXUL要素から呼び出される処理を、XUL文書中に記述できます。
たとえば、
<command id="foo" oncommand="alert( 'OK' );" />
のようにcommand要素が定義されていると、この要素のid属性の値をcommand属性で指定することで、
<button label="TEST" command="foo" />
button要素のクリックで、command要素のoncommand属性のスクリプトを実行させられます。これらの要素と属性は、それぞれ次の役割を担っています。
要素と属性 | 役割 |
---|---|
command要素 | 実行する処理を記述する。 command - Mozilla | MDN |
command属性 | 実行する処理が記述されている、command要素のidを指定する。 command - Mozilla | MDN |
oncommand属性 | commandがアクティブとなったときに実行する、イベントハンドラを指定する。 oncommand - Mozilla | MDN |
実行する処理は、その要素のcommand属性で直接記述することもできます。
<button label="TEST" oncommand="alert( 'OK' );" />
コマンドアップデータにより、状況に応じてコマンドの有効と無効を切り替えられます。
button要素のクリックなどにより、その要素がアクティブになった場合などに発生するイベントです。このイベントはXULCommandEventインターフェイスを実装しており、下表のプロパティを持ちます。
プロパティ | 内容 |
---|---|
target | |
type | |
bubbles | |
cancelable | |
view | |
detail | |
ctrlKey | |
shiftKey | |
altKey | |
metaKey |