スクリプト

オブジェクトを不用意にグローバルスコープで定義しないようにします。同一のXULにオーバーレイした複数の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" />

のようにします。

読み込む方法

  1. script要素
  2. evalInSandbox (Components.utils.evalInSandbox)
  3. The Sub-Script Loader (mozIJSSubScriptLoader)
  4. JavaScript modules

XULに記述する

XUL文書中にスクリプトを記述するならば、インライン スクリプトとして、

<script type="application/x-javascript"><![CDATA[

]]></script>

のように記述します。

ちなみにtype属性は「application/javascript」を指定するようにドキュメントに記述されています。しかし既存アドオンのソースを調べたところ、「application/x-javascript」を指定している例が多数でした。

参考

イベント

XUL要素のイベントについては、イベントハンドラで解説しています。

コマンド (command)

command要素

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' );" />

コマンドの有効/無効の自動切替

コマンドアップデータにより、状況に応じてコマンドの有効と無効を切り替えられます。

commandイベント

button要素のクリックなどにより、その要素がアクティブになった場合などに発生するイベントです。このイベントはXULCommandEventインターフェイスを実装しており、下表のプロパティを持ちます。

プロパティ 内容
target  
type  
bubbles  
cancelable  
view  
detail  
ctrlKey  
shiftKey  
altKey  
metaKey  
Firefoxアドオンの情報サイトから、まとめて検索