• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:event.srcElementの動的設定)

JavaScriptでevent.srcElementの動的設定方法は?

このQ&Aのポイント
  • JavaScriptのfunction内で、event.srcElementの値を上書きする方法について教えてください。
  • event.srcElementを動的に設定する場合、普通に「event.srcElement = document.getElementById('a');」と書くとスクリプトエラーが発生します。
  • IE6(SP2)で単体テストを行っている際に、event.srcElementを動的に設定し、各種パターンの検証を行いたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Chaire
  • ベストアンサー率60% (79/130)
回答No.2

document.getElementById("a").fireEvent("onclick") で #a を srcElement とする "click" が発火します。 また、elt.onclick のようなレガシープロパティではなく attachEvent() または HTML の onclick 属性を使っており、かつイベントハンドラがイベントオブジェクトを第一引数に受け取るようきちんと定義しているなら、 handleEvent({ type: 'click', srcElement: null }) のような疑似イベントオブジェクトを渡すだけで、テストとしては十分機能するのではないでしょうか。仮に外からイベントハンドラが見えないとしても、JScript には条件コンパイルがあるので、 //@cc_on@set@test=1 (function () {  function handleEvent (e) {   var se = e.srcElement;  }    //@if(@test)window.handleEvent = handleEvent;@end }) (); function testHoge() {  handleEvent({ srcElement: undefined }); } のようにテスト時だけ API を生やせば良い。テストが終わって @test=0 にすれば、その行は完全にコメントとして無視されます。これのおかげで、IE は非常にテスト・トレースしやすい環境のはずです。

estmo
質問者

お礼

「fireEvent」で解決しました。 引数なしのイベントハンドラであるため後者の方法は使えませんが、条件コンパイルについては知らなかったので、勉強になります。 ちょうどJsUnitによるテスト時のみ有効にしたいfunction等があったので、活用できそうなら活用してみます。 ありがとうございました。

その他の回答 (1)

  • think49
  • ベストアンサー率59% (285/482)
回答No.1

event.srcElement は読み込み専用です。別の値を書き込むことは出来ません。 http://msdn.microsoft.com/ja-jp/library/cc410014.aspx