如何在JavaScript中使用x,y坐标来模拟点击?
是否可以使用给定的坐标来模拟网页中的JavaScript点击?
你可以派发一个点击事件,虽然这不是一个真正的点击。 例如,它不能用来欺骗跨域iframe文件,认为它被点击。
所有现代浏览器都支持document.elementFromPoint
和HTMLElement.prototype.click()
,因为至lessIE 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
呃,当然你可以通过创build一个事件并调度它来模拟鼠标点击:
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()
没有正确的事情,但没有证实。
这只是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); }
出于安全原因,您不能使用javascript移动鼠标指针,也不能用它来模拟点击。
你试图完成什么?