XUL メモ
XUL メモ
■ タブブラウザのタブについて
- window は全タブで共有。 (= グローバル変数は window のプロパティなので全タブで共有される)。
- browser は全タブで共有。(getBrowser() の返り値)
- browser.contentDocument はタブ毎に所有。 (ただし、ページ毎の所有になり、ページ遷移でリセット)
- browser.contentWindow はタブ毎に所有。 (ただし、ページ毎の所有になり、ページ遷移でリセット)
以下のようなスクリプトを実行すると最初は "undefined"、二回目以降は "true" が表示されるが、 ページの遷移を行うと "undefined" に戻る。
ページの遷移をしてから「戻る」と getBrowser().contentWindow.moge の内容は "true" となる。 (= 内容が保持されている)。alert(getBrowser().contentWindow.moge); getBrowser().contentWindow.moge = true;
■ タブ一覧を取得
for (var i = 0; i < getBrowser().browsers.length; ++i) {
alert(getBrowser().browsers[i].contentDocument.title);
}
browser.browsers にタブ一覧があるので、それらを見る。■ オーバーレイについて
overlay を行うためには id でオーバーレイ先の要素を指定しないと無視されてしまう。
ところが、以下の pageInfo.xul の <keyset> みたいに id が存在しないところをオーバーレイしたい場合もある。 どうするか。
<window id="main-window" ...>
<keyset>
<key key="&closeWindow.key;" modifiers="accel" command="cmd_close"/>
<key keycode="VK_ESCAPE" command="cmd_close"/>
<key keycode="VK_F1" command="cmd_help"/>
<key key="©.key;" modifiers="accel" command="cmd_copy"/>
<key key="&selectall.key;" modifiers="accel" command="cmd_selectall"/>
<key key="&selectall.key;" modifiers="alt" command="cmd_selectall"/>
</keyset>
</window>
これについては上位エレメントの id を指定してあげる。
<overlay ...>
<window id="main-window">
<keyset>
<key id="f4kc_NextTab" oncommand="f4kc_NextTab();" key="]" />
<key id="f4kc_PrevTab" oncommand="f4kc_PrevTab();" key="[" />
</keyset>
</window>
</overlay>
■ XUL からキーイベントを擬似的に発生させる方法
例えば Ctrl + PageUp を発生させる。
var keyevent = document.createEvent("KeyEvents");
keyevent.initKeyEvent("keypress", false, true, document.defaultView,
true, false, false, false, KeyEvent.DOM_VK_PAGE_UP, null);
document.dispatchEvent(keyevent);
F6 とか Tab はうまく動かない? Event Bubbling あたりの関係?
■ Mac OS X と onKeyDown について
Mac OS X については Ctrl とか Alt とか Shift とかの modifiers については onKeyDown イベントが発生しない。
(Ctrl + クリックで右クリックになったりするから?)
それが原因で Mac OS X では modifiers のみからなるショートカットがおそらく作成不能。
Comments for This Page. Date: 2005-12-24 00:00 (JST)
