ブラウザの特殊な操作 各ブラウザ共通
プログラムでHTML要素のイベントを発生させてJavaScriptを実行する
HTML要素に定義されたイベントをプログラムにより発生させて、イベントに定義されているJavaScriptを実行します。
例えば、
のようなHTMLであれば、プログラムでonclickイベントを発生させます。
また、SelectタグにおいてはプログラムでOptionを選択してもonchangeイベントが発生しませんので、
明示的にイベントを発行させる必要があります。
例えば下記のようなHTMLの場合、
<option value="opt1">opt1</option>
<option value="opt2">opt2</option>
</select>
マウス操作で選択内容を変更すればonChangeイベントが発生してhogeメソッドが実行されますが、
プログラムで選択内容を変更しても発生しません。
以下のようにして明示的にイベントを実行させます。
InternetExplorer操作時
InternetExplorer操作でイベントを発生させる方法は2つあります。
1つ目は、各要素のfireEventメソッドを実行する方法です。
引数としてイベント名称を文字列で指定して呼び出せば、そのイベントが発生します。
2つ目は、各要素のdispatchEventメソッドを実行する方法です。
createEventメソッドとinitEventメソッドによりイベントを定義してから、
dispatchEventメソッドでイベントが発生します。
fireEventメソッドの場合は、その要素の直接イベントが定義されないと呼び出せませんが、
dispatchEventメソッドを使う方法なら、外部のJavaScriptにイベントが定義されている場合でも
発生させることができます。
'下記コードの動作確認はテストページ(https//web.biz-prog.net/test/testpage_jsevent.html)を使っています 'ボタンのクリックイベントを発生させる objIE.Document.getElementById("buttonid1").fireEvent("onclick") 'ボタンのクリックイベントを発生させるその2 Dim evt = objIE.Document.createEvent("HTMLEvents") evt.initEvent("click", False, True) objIE.Document.getElementById("buttonid1").dispatchEvent(evt) 'イベントを発生させる 'セレクトボックスにoncahngeイベントを発生させる objIE.Document.getElementsByName("selectname")(0).fireEvent("onchange") 'セレクトボックスにoncahngeイベントを発生させる2 Dim evt2 = objIE.Document.createEvent("HTMLEvents") evt2.initEvent("change", False, True) objIE.Document.getElementsByName("selectname")(0).dispatchEvent(evt2) 'イベントを発生させる
//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_jsevent.html)を使っています //ボタンのクリックイベントを発生させる objIE.Document.getElementById("buttonid1").fireEvent("onclick"); //ボタンのクリックイベントを発生させるその2 var evt = objIE.Document.createEvent("HTMLEvents"); evt.initEvent("click", false, true); objIE.Document.getElementById("buttonid1").dispatchEvent(evt); //イベントを発生させる //セレクトボックスにoncahngeイベントを発生させる objIE.Document.getElementsByName("selectname")(0).fireEvent("onchange"); //セレクトボックスにoncahngeイベントを発生させる2 var evt2 = objIE.Document.createEvent("HTMLEvents"); evt2.initEvent("change", false, true); objIE.Document.getElementsByName("selectname")(0).dispatchEvent(evt2); //イベントを発生させる
objIE.Document.GetElementsById("selectbox").fireEvent ("onchange")