73

IE では、element.click()JavaScript から呼び出すことができます。Firefox で同じタスクを実行するにはどうすればよいですか? 理想的には、クロスブラウザーで同様に機能する JavaScript が必要ですが、必要に応じて、ブラウザーごとに異なる JavaScript を使用します。

4

7 に答える 7

94

document.createEventドキュメントには、「createEventメソッドは非推奨です。代わりにイベント コンストラクターを使用してください」と記載されています。

したがって、代わりにこの方法を使用する必要があります。

var clickEvent = new MouseEvent("click", {
    "view": window,
    "bubbles": true,
    "cancelable": false
});

そして、次のような要素でそれを起動します:

element.dispatchEvent(clickEvent);

ここに示すように。

于 2014-03-18T02:07:46.970 に答える
23

jQueryを使用すると、まったく同じことができます。次に例を示します。

$("a").click();

ページ上のすべてのアンカーを「クリック」します。

于 2009-04-30T21:10:00.910 に答える
12

element.click() は、 W3C DOM 仕様で概説されている標準メソッドです。Mozilla の Gecko/Firefoxは標準に従っており、このメソッドは INPUT 要素でのみ呼び出すことができます。

于 2009-04-30T21:12:20.313 に答える
8

実際にリンクをたどろうとしているか、onclick をトリガーしようとしていますか? 次のようなもので onclick をトリガーできます。

var link = document.getElementById(linkId);
link.onclick.call(link);
于 2009-04-30T21:13:47.283 に答える
7

これはクロスブラウザの機能です(クリックハンドラー以外にも使用できます):

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);
    }
}
于 2009-04-30T21:27:34.363 に答える
1

上記の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で機能する理由を調査したかったのですが、それは今のところ贅沢であり、次の問題に進むことができます。

于 2013-02-20T12:29:51.883 に答える