質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

7920閲覧

ページの指定座標をクリックする みたいなことはできるか?

moscow3

総合スコア201

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/10/31 16:37

編集2017/10/31 23:29

デベロッパーツールのJSコンソールから、inputに文字を入力する。keyboard eventを発火させるまではわかったのですが、クリック処理と言うのはできないのでしょうか。

気になること
①ページの指定座標をクリックする という処理はできるのか?

②ページのbuttonタグの付いたエレメント(?)をクリックする という処理はできるのか?

③ページのbuttonタグ以外のエレメント(?)をクリックする(画像をクリックしてOnclickEventを発火させるみたいな) という処理はできるのか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/03/11 12:56

回答は出揃ってると思うが、いかがだろう。 解決済みにしては。
guest

回答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
defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moscow3

2017/11/01 00:23 編集

すみません。質問の仕方が悪かったです あるWEBページのデベロッパーツールのコンソールから というようなことはできないのでしょうか? --- 編集ありがとうございました。
退会済みユーザー

退会済みユーザー

2017/10/31 23:37

それに対しての回答がされてると思いますよ。
defghi1977

2017/10/31 23:42

一応Mozillaのページに対してFireFoxのコンソールからクリックできたので「可能」と判断しましたが, ブラウザ依存でないことを願います
moscow3

2017/11/01 00:26

for cloudkingさん。 私のコメントの後で、defighi1977さんが編集をされました。  (決して回答を見てなかったとかいうわけではないので、念のため)
moscow3

2017/11/01 00:34

for defghi1977さん。 実行した結果、普通にtrueとだけ返されたのですが(リンクをクリックした・・・はずなのに) クリックイベントを起こしても実際にクリックしたことにはならない・・ということでしょうか?
defghi1977

2017/11/01 00:47

クリック対象のリンク(a要素)が判っているのであれば, ②/③の方法を使ったほうが良いでしょう. ①のelementFromPointメソッドは操作対象が不定な場合に利用します.
moscow3

2017/11/01 16:28

なるほど。 確かに普通は②③の方法でうまくいくのですが、たまにそれではできない時があります。 (たとえばflash を使ったゲームを自動プレーするとか・・) そういうものに関しては、今回の、 座標を指定 ↓ そこにあるエレメントを取得 ↓ 取得したエレメントをクリック という方法でもうまくいかないのでしょうか?
defghi1977

2017/11/01 20:21

私の回答はあくまでHTML5に関わる基本的なものであり, 全てのパターンを網羅するものではありません. Flashについては質問の質が異なるため, 改めて記事を立てて下さい.
guest

0

要素がクリックされた際のイベントで指定されている関数を直接呼び出して処理するといったことは可能かと思いますが、ブラウザ内の処理だけで任意のマウスクリック操作等を行うことはできないかと思います。
ショッピングサイトを表示しただけで勝手に買い物をされたりしても困るかと思いますので、そのようなことは一般にできないものと思われます。

ユーザーの意図しないクリック操作を行わせる行為としては、クリックジャッキングといった手法などが存在しますが、これらへの対策もいくらかは考えられます。

投稿2017/10/31 20:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問