[javascript] JavaScript에서 x, y 좌표를 사용하여 클릭을 시뮬레이션하는 방법은 무엇입니까?

웹 페이지 내에서 자바 스크립트 클릭을 시뮬레이션하기 위해 주어진 좌표를 사용할 수 있습니까?



답변

당신은 전달할 수 있습니다 클릭 이 실제 클릭과 같은 아니지만, 이벤트를. 예를 들어, 교차 도메인 iframe 문서가 클릭되었다고 생각하도록 속이는 데 사용할 수 없습니다.

모든 최신 브라우저 지원 document.elementFromPointHTMLElement.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()옳은 일을 한다고 가정 하지만 확인하지 않았습니다.


답변

이것은 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);


답변

보안상의 이유로 자바 스크립트로 마우스 포인터를 이동하거나 클릭을 시뮬레이션 할 수 없습니다.

달성하려는 것이 무엇입니까?


답변