Ich frage mich nur, wie ich mit JavaScript einen Klick auf ein Element simulieren kann.
Derzeit habe ich:
<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>
Aber es funktioniert nicht :(
Irgendwelche Ideen?
javascript
Belgin Fisch
quelle
quelle
Antworten:
Folgendes habe ich mir ausgedacht. Es ist ziemlich einfach, aber es funktioniert:
Verwendungszweck:
quelle
document.querySelector('[value="2706236"]').nextSibling.nextSibling.dispatchEvent(ev);
:)dispatchEvent
oderclick
Anrufungen mitsetTimeout
, wie es das scheintdispatchEvent
ist synchron .Event.initEvent
ist jetzt veraltet developer.mozilla.org/en/docs/Web/API/Event/initEventWas ist mit etwas Einfachem wie:
Wird sogar vom IE unterstützt.
quelle
Haben Sie darüber nachgedacht, jQuery zu verwenden, um die Erkennung aller Browser zu vermeiden? Mit jQuery wäre es so einfach wie:
quelle
Referenz
quelle
Mit jQuery können Sie sich viel Platz sparen. Sie müssen nur verwenden:
quelle
Die beste Antwort ist die beste! Es hat jedoch keine Mausereignisse für mich in Firefox ausgelöst, als
etype = 'click'
.Also änderte ich das
document.createEvent
zu ,'MouseEvents'
und dass das Problem behoben. Der zusätzliche Code dient zum Testen, ob ein anderes Codebit das Ereignis stört oder nicht, und wenn es abgebrochen wird, würde ich dies in der Konsole protokollieren.quelle
Folgen Sie diesem Link, um mehr über die Mausereignisse zu erfahren, die Javascript verwenden, und über die entsprechende Browserkompatibilität
https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent#Browser_compatibility
quelle