웹 페이지 내에서 자바 스크립트 클릭을 시뮬레이션하기 위해 주어진 좌표를 사용할 수 있습니까?
웹 페이지 내에서 자바 스크립트 클릭을 시뮬레이션하기 위해 주어진 좌표를 사용할 수 있습니까?
답변:
당신은 전달할 수 있습니다 클릭 이 실제 클릭과 같은 아니지만, 이벤트를. 예를 들어, 교차 도메인 iframe 문서가 클릭되었다고 생각하도록 속이는 데 사용할 수 없습니다.
모든 최신 브라우저 지원 document.elementFromPoint
및 HTMLElement.prototype.click()
적어도 IE 6, 파이어 폭스 5, 당신은 가능성이있어 사파리 크롬의 모든 버전과 아마 모든 버전에 대한 신경 때문에. 링크를 따라 가고 양식을 제출합니다.
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에 표시됩니다 .
이것은 MouseEvent 객체를 사용하도록 업데이트 된 torazaburo의 답변 입니다.
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);
보안상의 이유로 자바 스크립트로 마우스 포인터를 이동하거나 클릭을 시뮬레이션 할 수 없습니다.
달성하려는 것이 무엇입니까?
createEvent()
+initMouseEvent()