Webページ内のJavaScriptのクリックをシミュレートするために、指定された座標を使用することは可能ですか?
5 に答える
クリックイベントをディスパッチできますが、これは実際のクリックと同じではありません。たとえば、クロスドメインのiframeドキュメントをだましてクリックされたと思わせるために使用することはできません。
最近のすべてのブラウザは、少なくともIE 6、Firefox 5以降、Chromeのすべてのバージョン、そしておそらく気になると思われるSafariのすべてのバージョンをサポートdocument.elementFromPoint
しています。HTMLElement.prototype.click()
リンクをたどり、フォームを送信することもできます。
document.elementFromPoint(x, y).click();
はい、イベントを作成してディスパッチすることで、マウスクリックをシミュレートできます。
function click(x,y){
var ev = document.createEvent("MouseEvent");
var el = document.elementFromPoint(x,y);
ev.initMouseEvent(
"click",
true /* bubble */, true /* cancelable */,
window, null,
x, y, 0, 0, /* coordinates */
false, false, false, false, /* modifier keys */
0 /*left*/, null
);
el.dispatchEvent(ev);
}
要素でこのメソッドを使用することに注意してください。このclick
メソッドは広く実装されていますが、標準ではなく、PhantomJSなどでは失敗します。jQueryの実装は.click()
正しいことをしていると思いますが、確認していません。
これはただのトラザブロの答えであり、MouseEventオブジェクトを使用するように更新されています。
function click(x, y)
{
var ev = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true,
'screenX': x,
'screenY': y
});
var el = document.elementFromPoint(x, y);
el.dispatchEvent(ev);
}
それは私にとってはうまくいきませんが、コンソールに正しい要素を出力します
これはコードです:
function click(x, y)
{
var ev = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true,
'screenX': x,
'screenY': y
});
var el = document.elementFromPoint(x, y);
console.log(el); //print element to console
el.dispatchEvent(ev);
}
click(400, 400);
セキュリティ上の理由から、javascriptを使用してマウスポインタを移動したり、javascriptを使用してクリックをシミュレートしたりすることはできません。
あなたが達成しようとしていることは何ですか?