Webページ内のJavaScriptのクリックをシミュレートするために特定の座標を使用することは可能ですか?
Webページ内のJavaScriptのクリックをシミュレートするために特定の座標を使用することは可能ですか?
回答:
これは実際のクリックとは異なりますが、クリックイベントを送出できます。たとえば、クロスドメインのiframeドキュメントをだまして、クリックされたと思わせることはできません。
最新のすべてのブラウザがサポートdocument.elementFromPoint
しHTMLElement.prototype.click()
、少なくともIE 6、Firefox 5以降、すべてのバージョンのChrome、そしておそらくすべてのバージョンのSafariが気になる可能性があります。リンクをたどってフォームを送信することもできます:
document.elementFromPoint(x, y).click();
https://developer.mozilla.org/En/DOM:document.elementFromPoint https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/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()
正しいことだと思いますが、確認していません。
$.click()
initMouseEvent
廃止されました:developer.mozilla.org/en-US/docs/Web/API/MouseEvent/...を
initMouseEvent
、あなたは使用することができますvar event = new MouseEvent( "click", { clientX: x, clientY: y, bubbles: true } )
。これはまたに示されているstackoverflow.com/a/36144688/384670。
これはtorazaburoの答えであり、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を使用してマウスポインターを移動したり、クリックをシミュレートしたりすることはできません。
あなたが達成しようとしていることは何ですか?
createEvent()
+initMouseEvent()