MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

oninput イベントをコードから起こす方法
https://forums.mozillazine.jp/viewtopic.php?f=26&t=8886
ページ 11

作成者:  masahal [ 2009年7月29日(水) 18:55 ]
記事の件名:  oninput イベントをコードから起こす方法

テキストボックス要素などの oninput イベントをコードから起こさせる方法ってないでしょうか。

具体的には、自分のアドオン検索ボックス自動入力において、検索を行ったとき、GoogleBar Lite など他のアドオンのテキストボックスにも検索語を入力し、同時にoninput イベントを起こすようにさせたいんですが( id はわかっている場合を考えます。ちなみにGoogleBar Lite の場合は"GBL-SearchBox")。


自分で調べた限りでは直接取得する方法はないようなんですが、例えば何らかの形でキーを押したのと同じ効果を起こさせるとかできないでしょうか。

作成者:  mitsugu [ 2009年7月29日(水) 19:42 ]
記事の件名:  Re: oninput イベントをコードから起こす方法

 私見ですがmasahalさんがなさろうとされていることは、あまりお薦めできません。理由は以下の通りです。
  • 「検索ボックス自動入力」が他の拡張の仕様の影響をダイレクトに受けることになるので、それら拡張に変更があった場合、それら全ての拡張の内容を確認して「検索ボックス自動入力」を修正しなければならず、メンテナンスに要する労力が大幅に増加する可能性がある
  • ターゲットとする拡張 (例えば GoogleBar Lite など) が API を公開していないのなら、その拡張作者は自分の拡張を不正にコントロールされていると考える可能性がある


# 様々なリスクを御自身で引き受け、どうしてもやるのならターゲットとする拡張の
# command 要素 の id を調べて、 comannd 要素を呼び出すのが無難かと思います。
# 実際にその機能をインプリメントする前にターゲット拡張の作者さんに
# あらかじめ、許諾を得ておいた方がよいかと思います。
# でも、人間関係や技術上、もしくは自作拡張管理上のトラブルの元となり易いので、
# やっぱりお薦めできません。

作成者:  Piro [ 2009年7月30日(木) 01:57 ]
記事の件名:  Re: oninput イベントをコードから起こす方法

inputイベントの生成自体は可能です。
やり方としては、手前味噌ですが、自動テストツールのUxUのイベントエミュレーションまわりのコードが参考になるのではないでしょうか。
http://www.cozmixng.org/repos/mozilla/u ... /action.js
この中のinputTextToField()というのがそれです。
XUL/Migemoの自動テストでは、これを使ってFirefoxの検索ツールバーに対するユーザの文字入力操作をエミュレートしています。

とはいえ、例えばoninputをトリガーにして各ボタンの有効無効を切り替えるためのupdateUI()というメソッドが呼ばれるので……とかそういうケースなのであれば、inputイベントを完璧にエミュレートするのはちょっとオーバースペックという気もしますね。
自分なら、こういう場合はメソッドの方を直接呼んじゃうと思います。
相手側のバージョンアップにその都度追従する必要はありますが、その方がスッキリして、余計なバグを仕込んでしまう余地が少なくなりますから。

作成者:  masahal [ 2009年8月01日(土) 16:34 ]
記事の件名:  Re: oninput イベントをコードから起こす方法

返信が遅れてすいません。

やっぱりほかのアドオンの操作はいろいろ気をつけなければいけないようですね。
とりあえずはこのままで、需要が大きいようなら直接メソッドを呼ぶ方法で検討することにします。

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/