
デベロッパーツールのJSコンソールから、inputに文字を入力する。keyboard eventを発火させるまではわかったのですが、クリック処理と言うのはできないのでしょうか。
気になること
①ページの指定座標をクリックする という処理はできるのか?
②ページのbuttonタグの付いたエレメント(?)をクリックする という処理はできるのか?
③ページのbuttonタグ以外のエレメント(?)をクリックする(画像をクリックしてOnclickEventを発火させるみたいな) という処理はできるのか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。


回答2件
0
はい、可能です.
①ページの指定座標をクリックする という処理はできるのか?
document.elementFromPoint
メソッドを用いて指定した座標下の最前面にある要素を取得し, dispatchEvent
メソッドでイベントを着火します.
②ページのbuttonタグの付いたエレメント(?)をクリックする という処理はできるのか?
querySelectorAll
メソッドなどを用いてクリック対象の要素を入手し, dispatchEvent
メソッドを用いてイベントを着火します.
③ページのbuttonタグ以外のエレメント(?)をクリックする(画像をクリックしてOnclickEventを発火させるみたいな) という処理はできるのか?
上の②と同様です.
下記にscript
要素を用いた例を示します.
HTML
1<input type="button" value="自動クリック" id="btn"/> 2<script> 3"use strict"; 4window.onload = e => { 5 const x = 15, y = 15; 6 const elem = document.elementFromPoint(x, y); 7 elem.dispatchEvent(new MouseEvent("click", { 8 clientX: x, 9 clientY: y 10 })); 11}; 12btn.onclick = e => { 13 console.log("clicked"); 14}; 15</script>
コンソールで実行する場合は, 下記のコードを(編集した後)コンソールにコピーペーストして実行してみて下さい.
JavaScript
1{ 2 const x = 15, y = 15; 3 const elem = document.elementFromPoint(x, y); 4 elem.dispatchEvent(new MouseEvent("click", { 5 clientX: x, 6 clientY: y 7 })); 8}
参考)
https://developer.mozilla.org/ja/docs/Web/API/Document/elementFromPoint
https://developer.mozilla.org/ja/docs/Web/Guide/Events/Creating_and_triggering_events
投稿2017/10/31 23:24
編集2017/10/31 23:39総合スコア4756
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2017/10/31 23:37

0
要素がクリックされた際のイベントで指定されている関数を直接呼び出して処理するといったことは可能かと思いますが、ブラウザ内の処理だけで任意のマウスクリック操作等を行うことはできないかと思います。
ショッピングサイトを表示しただけで勝手に買い物をされたりしても困るかと思いますので、そのようなことは一般にできないものと思われます。
ユーザーの意図しないクリック操作を行わせる行為としては、クリックジャッキングといった手法などが存在しますが、これらへの対策もいくらかは考えられます。
投稿2017/10/31 20:59

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。