반응형
JavaScript로 클릭을 시뮬레이션하는 방법은 무엇입니까?
JavaScript를 사용하여 요소에 대한 클릭을 시뮬레이션하는 방법이 궁금합니다.
현재 나는 :
<script type="text/javascript">
function simulateClick(control)
{
if (document.all)
{
control.click();
}
else
{
var evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null );
control.dispatchEvent(evObj);
}
}
</script>
<a href="http://www.google.com" id="mytest1">test 1</a><br>
<script type="text/javascript">
simulateClick(document.getElementById('mytest1'));
</script>
그러나 작동하지 않습니다 :(
어떤 아이디어?
내가 요리 한 것이 여기 있습니다. 꽤 간단하지만 작동합니다.
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
용법:
eventFire(document.getElementById('mytest1'), 'click');
다음과 같은 간단한 것은 어떻습니까?
document.getElementById('elementID').click();
IE에서도 지원 됩니다.
모든 브라우저 감지를 피하기 위해 jQuery 사용을 고려 했습니까? jQuery를 사용하면 다음과 같이 간단합니다.
$("#mytest1").click();
jQuery를 사용하면 많은 공간을 절약 할 수 있습니다. 다음을 사용해야합니다.
$('#myElement').trigger("click")
var elem = document.getElementById('mytest1');
// Simulate clicking on the specified element.
triggerEvent( elem, 'click' );
/**
* Trigger the specified event on the specified element.
* @param {Object} elem the target element.
* @param {String} event the type of the event (e.g. 'click').
*/
function triggerEvent( elem, event ) {
var clickEvent = new Event( event ); // Create the event.
elem.dispatchEvent( clickEvent ); // Dispatch the event.
}
참고
- https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events
- https://codepen.io/felquis/pen/damDA
최고 답변이 최고입니다! 그러나 Firefox에서 마우스 이벤트가 발생하지 않았습니다 etype = 'click'
.
그래서, 나는 변화 document.createEvent
에 'MouseEvents'
그 문제를 해결했습니다. 추가 코드는 다른 코드 비트가 이벤트를 방해하는지 여부를 테스트하는 것이며 취소 된 경우 콘솔에 기록합니다.
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent(etype, true, false);
var canceled = !el.dispatchEvent(evObj);
if (canceled) {
// A handler called preventDefault.
console.log("automatic click canceled");
} else {
// None of the handlers called preventDefault.
}
}
}
참고 URL : https://stackoverflow.com/questions/2705583/how-to-simulate-a-click-with-javascript
반응형
'Programing' 카테고리의 다른 글
루비-배열 테스트 (0) | 2020.04.01 |
---|---|
Html.fromHtml은 Android N에서 더 이상 사용되지 않습니다. (0) | 2020.04.01 |
선택적 키워드 인수의 namedtuple 및 기본값 (0) | 2020.04.01 |
UITextField가 변경 될 때 어떻게 확인합니까? (0) | 2020.04.01 |
루프가 반대로 더 빠릅니까? (0) | 2020.04.01 |