Как имитировать клик с помощью 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="#" onclick="location.href='http://www.google.com'; return false;" id="mytest1">test 1</a><br>
<script type="text/javascript">
simulateClick(document.getElementById('mytest1'));
</script>
Но он не работает: (
Любые идеи?
Ответы
Ответ 1
Вот что я приготовил. Это довольно просто, но он работает:
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');
Ответ 2
Как насчет чего-то простого:
document.getElementById('elementID').click();
Поддерживается даже IE.
Ответ 3
Рассматривали ли вы использование jQuery, чтобы избежать обнаружения браузера? С jQuery это было бы так же просто, как:
$("#mytest1").click();
Ответ 4
Вы можете сэкономить кучу пространства, используя jQuery. Вам нужно всего лишь использовать:
$('#myElement').trigger("click")
Ответ 5
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.
}
Ссылка
Ответ 6
Лучший ответ - лучший! Тем не менее, он не запускал события мыши для меня в 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.
}
}
}
Ответ 7
Я использую свой мобильный телефон и SKYPE для звонков. Это моя стихия, которая скрыта от глаз...
<a id=call href="tel:<?=$phone?>"><?=$phone?></a>
Элемент скрыт от просмотра при загрузке с помощью... var call = document.getElementById("call"); call.style.display = "нет";
Эта линия ванильного JavaScript работает на меня, когда я использую свой мобильный телефон...
var x = document.getElementById('call').click();
Если бы я использовал SKYPE, я бы изменил "tel" на "callto" и ничего больше...
<a id=call href="callto:<?=$phone?>"><?=$phone?></a>
от Боба Страттона