ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でクリックをシミュレートする方法: `click()` と `dispatchEvent()`?

JavaScript でクリックをシミュレートする方法: `click()` と `dispatchEvent()`?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-04 06:30:15628ブラウズ

How to Simulate Clicks in JavaScript: `click()` vs. `dispatchEvent()`?

JavaScript でのクリックのシミュレーション: ガイド

JavaScript を使用した要素のクリックのシミュレーションは、Web 開発における一般的なタスクです。これは、ブラウザの互換性要件に応じて、さまざまな方法で実現できます。

click() メソッドの使用 (IE のみ)

Internet Explorer では、以下を使用できます。クリックイベントをトリガーしたい要素に直接 click() メソッドを追加します:

document.getElementById('btn').click();

dispatchEvent() メソッド (最新のブラウザ)

最新のブラウザの場合、dispatchEvent() メソッドを使用してカスタム マウス クリック イベントを作成し、要素にディスパッチできます:

var evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null);
document.getElementById('btn').dispatchEvent(evObj);

コードが機能しない理由

質問で提供されたコードは機能しませんSimulateClick() 関数に重要な詳細が欠けているため、機能します。 MouseEvents API の initMouseEvent() メソッドでは、ブラウザ ウィンドウ内のクリックの位置を指定する clientX プロパティと clientY プロパティを設定する必要があります。

改訂コード

この問題を解決するには、次のコードを追加して clientX と clientY を設定します。プロパティ:

evObj.clientX = 0;
evObj.clientY = 0;

更新されたコードは次のようになります:

function simulateClick(control) {
  if (document.all) {
    control.click();
  } else {
    var evObj = document.createEvent('MouseEvents');
    evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null);
    evObj.clientX = 0;
    evObj.clientY = 0;
    control.dispatchEvent(evObj);
  }
}

これで、ID 'mytest1' の要素のクリックが正常にシミュレートされるはずです。

以上がJavaScript でクリックをシミュレートする方法: `click()` と `dispatchEvent()`?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。