반응형
자바스크립트에서 x,y 좌표를 사용하여 클릭을 시뮬레이션하는 방법은 무엇입니까?
웹 페이지 내에서 자바스크립트의 클릭을 시뮬레이션하기 위해 주어진 좌표를 사용하는 것이 가능합니까?
클릭 이벤트를 발송할 수 있지만 실제 클릭과 다릅니다.예를 들어, 교차 도메인 iframe 문서가 클릭된 것으로 간주하도록 속이는 데 사용할 수 없습니다.
모든 최신 브라우저 지원document.elementFromPoint
그리고.HTMLElement.prototype.click()
적어도 IE 6, Firefox 5, Chrome의 모든 버전, 그리고 아마도 당신이 관심을 가질만한 Safari의 모든 버전.링크를 따라가서 양식을 제출하기도 합니다.
document.elementFromPoint(x, y).click();
- https://developer.mozilla.org/en-US/docs/Web/API/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
요소에 대한 방법 - 널리 구현되었지만 표준이 아니며 예를 들어 실패합니다.팬텀JS. 저는 jQuery의 구현이.click()
옳은 일을 하지만 확인하지 않았습니다.
마우스 이벤트 개체를 사용하도록 업데이트된 토라자부로의 답변입니다.
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로 마우스 포인터를 이동하거나 클릭을 시뮬레이션할 수 없습니다.
당신이 성취하려고 하는 것은 무엇입니까?
언급URL : https://stackoverflow.com/questions/3277369/how-to-simulate-a-click-by-using-x-y-coordinates-in-javascript
반응형
'programing' 카테고리의 다른 글
파이썬에서 외부 프로그램(실행 파일)을 실행하시겠습니까? (0) | 2023.07.31 |
---|---|
IQueryable 결과 집합이 null인지 확인하는 가장 좋은 방법은 무엇입니까? (0) | 2023.07.31 |
CSS - Overflow: Scroll; - 항상 수직 스크롤 막대를 표시합니까? (0) | 2023.07.31 |
선행 0을 추가하는 방법은 무엇입니까? (0) | 2023.07.31 |
Angular 2 및 브라우저 자동 채우기 (0) | 2023.06.22 |