IE では、element.click()
JavaScript から呼び出すことができます。Firefox で同じタスクを実行するにはどうすればよいですか? 理想的には、クロスブラウザーで同様に機能する JavaScript が必要ですが、必要に応じて、ブラウザーごとに異なる JavaScript を使用します。
7 に答える
document.createEvent
ドキュメントには、「createEventメソッドは非推奨です。代わりにイベント コンストラクターを使用してください」と記載されています。
したがって、代わりにこの方法を使用する必要があります。
var clickEvent = new MouseEvent("click", {
"view": window,
"bubbles": true,
"cancelable": false
});
そして、次のような要素でそれを起動します:
element.dispatchEvent(clickEvent);
ここに示すように。
element.click() は、 W3C DOM 仕様で概説されている標準メソッドです。Mozilla の Gecko/Firefoxは標準に従っており、このメソッドは INPUT 要素でのみ呼び出すことができます。
実際にリンクをたどろうとしているか、onclick をトリガーしようとしていますか? 次のようなもので onclick をトリガーできます。
var link = document.getElementById(linkId);
link.onclick.call(link);
これはクロスブラウザの機能です(クリックハンドラー以外にも使用できます):
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
上記のKooiIncの関数を使用しましたが、IE用の「ボタン」とFireFox用の「送信」の2つの異なる入力タイプを使用する必要がありました。理由はよくわかりませんが、機能します。
// HTML
<input type="button" id="btnEmailHidden" style="display:none" />
<input type="submit" id="btnEmailHidden2" style="display:none" />
//JavaScriptで
var hiddenBtn = document.getElementById("btnEmailHidden");
if (hiddenBtn.fireEvent) {
hiddenBtn.fireEvent('onclick');
hiddenBtn[eType]();
}
else {
// dispatch for firefox + others
var evObj = document.createEvent('MouseEvent');
evObj.initEvent(eType, true, true);
var hiddenBtn2 = document.getElementById("btnEmailHidden2");
hiddenBtn2.dispatchEvent(evObj);
}
私は検索して多くの提案を試しましたが、これが最終的に機能したものです。もう少し時間があれば、送信がFFで機能し、ボタンがIEで機能する理由を調査したかったのですが、それは今のところ贅沢であり、次の問題に進むことができます。