Zastanawiam się, jak mogę użyć JavaScript do symulacji kliknięcia elementu.
Obecnie mam:
<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>
Ale to nie działa :(
Jakieś pomysły?
javascript
Belgin Fish
źródło
źródło
Odpowiedzi:
Oto co ugotowałem. To dość proste, ale działa:
Stosowanie:
źródło
document.querySelector('[value="2706236"]').nextSibling.nextSibling.dispatchEvent(ev);
:)dispatchEvent
lubclick
wywołaniasetTimeout
, ponieważ wydaje się, żedispatchEvent
jest synchroniczne .Event.initEvent
jest teraz przestarzały developer.mozilla.org/en/docs/Web/API/Event/initEventCo z czymś prostym, takim jak:
Obsługiwany nawet przez IE.
źródło
Czy rozważałeś użycie jQuery, aby uniknąć wykrycia wszystkich przeglądarek? Z jQuery byłoby to tak proste, jak:
źródło
Odniesienie
źródło
Możesz zaoszczędzić sporo miejsca za pomocą jQuery. Musisz tylko użyć:
źródło
Najlepsza odpowiedź jest najlepsza! Jednak w Firefoksie nie powodowało to zdarzeń myszy
etype = 'click'
.Więc zmienił
document.createEvent
się'MouseEvents'
i że problem został rozwiązany. Dodatkowym kodem jest sprawdzenie, czy inny fragment kodu zakłóca zdarzenie, a jeśli zostanie anulowany, zaloguję to na konsolę.źródło
Kliknij ten link, aby dowiedzieć się o zdarzeniach związanych z myszą przy użyciu Javascript i kompatybilności przeglądarki w tym samym celu
https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent#Browser_compatibility
źródło