Bir web sayfasındaki JavaScript'teki bir tıklamayı simüle etmek için verilen koordinatları kullanmak mümkün müdür?
Bir web sayfasındaki JavaScript'teki bir tıklamayı simüle etmek için verilen koordinatları kullanmak mümkün müdür?
Yanıtlar:
Gerçek tıklama ile aynı olmasa da bir tıklama olayı gönderebilirsiniz . Örneğin, etki alanları arası bir iframe belgesini tıklandığını düşünmesi için kandırmak için kullanılamaz.
Tüm modern tarayıcılar document.elementFromPoint
ve HTMLElement.prototype.click()
en azından IE 6, Firefox 5, Chrome'un herhangi bir sürümünü ve muhtemelen ilgilendiğiniz herhangi bir Safari sürümünü destekler. Bağlantıları bile takip edecek ve formlar gönderecek:
document.elementFromPoint(x, y).click();
https://developer.mozilla.org/En/DOM:document.elementFromPoint https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
Evet, bir olay oluşturup göndererek bir fare tıklamasını simüle edebilirsiniz:
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
Yöntemi bir eleman üzerinde kullanmaktan kaçının - yaygın olarak uygulanır ancak standart değildir ve örneğin PhantomJS'de başarısız olur. JQuery'nin uygulamasının .click()
doğru şeyi yaptığını, ancak onaylamadığını varsayıyorum .
$.click()
initMouseEvent
kullanımdan kaldırıldı: developer.mozilla.org/en-US/docs/Web/API/MouseEvent/…
initMouseEvent
Kullanımdan kaldırılanlar yerine kullanabilirsiniz. var event = new MouseEvent( "click", { clientX: x, clientY: y, bubbles: true } )
Bu, stackoverflow.com/a/36144688/384670 adresinde de gösterilmektedir .
Bu sadece Torazaburo'nun bir MouseEvent nesnesi kullanacak şekilde güncellenmiş cevabıdır .
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);
}
benim için çalışıyor ama doğru öğeyi konsola yazdırıyor
kod bu:
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);
Güvenlik nedenleriyle, fare işaretçisini javascript ile hareket ettiremez veya onunla bir tıklamayı simüle edemezsiniz.
Başarmaya çalıştığınız şey nedir?
createEvent()
+initMouseEvent()