過去ログ表示


過去ログ 233 を表示

トピック内全 3 記事中の 1 〜 3 番目を表示
[ 最新記事及び返信フォームをトピックトップへ ]
このトピックの全ページ / [0]

イベントを無効にする方法
(#37019) このトピック中1番目の投稿
(環境: WinXP SP2/Firefox2.0)

作成したエクステンションの中に含まれているボタンやテキストフィールドなどの部品を自在に見せたり隠したりする機能を作成したいと考えています。部品が少なければ別メニューからオン/オフをラジオボタンか何かで操作すればいいのですが、コントロールしたい部品がかなり多いので、実際のそのエクステンションの画面を使用してGUIで操作したいと思っています。

今考えているのは、編集操作用のXULプログラムを別に作り、ターゲットのXULをbrowserタグを使用して読み込み、ターゲットの中の全てのIDを取得し、イベントリスナー(click)をそれぞれの取得したIDの部品に追加するというものです。そして、その操作用のXULから例えばボタンがクリックされた場合には、そのボタンをdisableにし、その属性をどこかに保持しておいて、次回、エクステンションが起動されたときにそのボタンは使用できないようにする、と言う感じです。

実際に、XULを読み込み、クリックによってそれぞれの部品をdisable/enableの切り替えの表示をさせるところまではできました。問題は、クリック時にそれぞれの部品に元から設定されているイベントまで起動してしまうことです。
例えば、以下のような例で、

// test.xul
<div id="contents" flex="1">
<browser id="editorBrowser" src="target.xul" flex="1" type="content-primary"/>
</div>

// target.xul
<div id="mainWindow">
<button id="button1" oncommand="alert('ok')" label="OK"/>
</div>

test.xulを起動すると、target.xulが読み込まれるようになっていますが、当然のことながら、button1をクリックすると"OK"というアラートが出てしまいます。これを無効にしたいのですが、どのような方法がありますでしょうか?できたら、targetのほうのコードをこのために編集したくないので、test.xulのほうでイベントをキャプチャして無効にするような方法があればベストなのですが。
何かアイディアがありましたらよろしくお願いいたします。

Re[1]: イベントを無効にする方法
(#37044) このトピック中2番目の投稿
(環境: WinXP SP2/SeaMonkey1.5)

> button1をクリックすると"OK"というアラートが出てしまいます。これを無効にしたいのですが、どのような方法がありますでしょうか?できたら、targetのほうのコードをこのために編集したくないので、test.xulのほうでイベントをキャプチャして無効にするような方法があればベストなのですが。

# 前半をよく読まずに、ここしか見てないので、ハズしてたらごめんなさい。
こんな感じでしょうか?

// test.xul
<script type="application/x-javascript"><![CDATA[
function listener(event) {
if (event.target.id == "button1") {
event.stopPropagation();
}
}
function init(browser) {
browser.contentDocument.documentElement.addEventListener("command", listener, true);
}
]]></script>
<div id="contents" flex="1">
<browser id="editorBrowser" src="target.xul" flex="1" type="content-primary" onload="init(this);"/>
</div>

# 同じ名前空間に div と browser が存在するようですが…
# HTML とは違う意味で div を使ってる?

Re[2]: イベントを無効にする方法
(#37053) このトピック中3番目の投稿
(環境: WinXP SP2/Firefox2.0)

できました。ありがとうございました。
前半の説明部分は書かなくても問題なかったですね(^^;

> # 同じ名前空間に div と browser が存在するようですが…
> # HTML とは違う意味で div を使ってる?

別の意図で使っていたのですが必要なくなった今もそのまま残してしまっていました。すみません。
済!

このトピックの全ページ / [0]

返信不可


- Child Tree -