Wie klicke ich programmgesteuert auf einen Link mit Javascript?


173

Gibt es eine Möglichkeit, mit JavaScript auf einen Link auf meiner Seite zu klicken?


6
Sie können nur einen Klick auf Elemente vom Typ input type = "button" ausführen.
Ballsacian1

@ Ballsacian1 Ich habe .click()ein <a>Element verwendet und es hat funktioniert.
PaulMag

Antworten:


237
document.getElementById('yourLinkID').click();

18
Bisher funktionierte es in allen Browsern, die ich ausprobiert habe, einschließlich IE, Safari, Chrome, Firefox und Opera.
Arik

5
Beachten Sie, dass target="_blank"der Popup-Blocker des Browsers für das neue Fenster aktiviert wird , wenn der Link eine Eigenschaft hat .
Wonsuc

45

Diese Funktion funktioniert mindestens in Firefox und Internet Explorer. Es führt alle an den Link angehängten Ereignishandler aus und lädt die verknüpfte Seite, wenn die Ereignishandler die Standardaktion nicht abbrechen.

function clickLink(link) {
    var cancelled = false;

    if (document.createEvent) {
        var event = document.createEvent("MouseEvents");
        event.initMouseEvent("click", true, true, window,
            0, 0, 0, 0, 0,
            false, false, false, false,
            0, null);
        cancelled = !link.dispatchEvent(event);
    }
    else if (link.fireEvent) {
        cancelled = !link.fireEvent("onclick");
    }

    if (!cancelled) {
        window.location = link.href;
    }
}

5
Matthew hat Recht und stackoverflow.com/questions/809057/… hat weitere Informationen darüber, warum. Cross Browser macht Spaß :)
Dan F

4
es respektiert nicht das targetAttribut oder<base target="frame">
Vitim.us

38

Wenn Sie nur die aktuelle Seitenadresse ändern möchten, können Sie dies einfach in Javascript tun:

location.href = "http://www.example.com/test";

53
Abgestimmt, weil ich Antworten nicht mag, die auf den Anwendungsfall antworten, anstatt ihn anzusprechen. "Ich nehme an, dass dies Ihre Absicht ist, und bin mir Ihrer Einschränkungen nicht bewusst, also mit einer konzeptuellen Sphäre in einem konzeptuellen Vakuum: Verwenden Sie diese."
Cazlab

11
Ich habe abgestimmt, weil ich nach einer guten Lösung gesucht habe, um auf den mailto:Link im userjs-Skript zu klicken. Hat mir auf jeden Fall Zeit gespart. Ich war bereit, ein aElement zu erstellen und einen "programmatischen Klick" zu machen. Stackoverflow.com/questions/809057/…
AD

6
Ich habe auch versucht, click()die an anderer Stelle und darüber vorgeschlagene Methode aufzurufen , und es hat in IE9 nicht funktioniert, aber die Einstellung location.hrefhat die E-Mail tatsächlich über den mailto:Link gesendet . Tolle Lösung!
Ajeh

Diese Methode war in PyQT4 hilfreich. Der Aufruf von click () funktionierte bei mir nicht. Vielen Dank!
VilleLipponen

Behandelt nicht meinen Anwendungsfall, der in der Frage steht, wo ich auf einen Link klicken möchte. Der Link führt nirgendwo hin, hat aber andere Dinge, die mit dem Klickereignis verbunden sind. Ich möchte den Standort nicht ändern.
Zufälliger Elefant

17

Einfach so:

<a id="myLink" onclick="alert('link click');">LINK 1</a>
<a id="myLink2" onclick="document.getElementById('myLink').click()">Click link 1</a>

oder beim Laden der Seite:

<body onload="document.getElementById('myLink').click()">
...
<a id="myLink" onclick="alert('link click');">LINK 1</a>
...
</body>

2
Ja, aber dann muss ein anderer Klick passieren.
Ólafur Waage

2
Kannst du es auf keinen Fall tun, wie zum Beispiel beim Laden von Seiten?
Bill the Lizard

2
Vielen Dank für die Hilfe, aber ich benutze Firefox 3 und es funktioniert nicht, in der Fehlerkonsole sagt Fehler: document.getElementById ("myLink"). Klick ist keine Funktion

Es scheint, dass Firefox die Klickmethode nicht unterstützt. und die meisten Antworten, einschließlich meiner, sind nicht hilfreich :)
Canavar

@ Canavar: Versuchen Sie Klicken statt Klicken
Stefan Steiger

9

Die jQuery-Methode zum Klicken auf einen Link lautet

$('#LinkID').click();

Für den MailTo-Link müssen Sie den folgenden Code schreiben

$('#LinkID')[0].click();

2
Das funktioniert nicht. Dies ist nicht die Antwort auf die Frage, die er gestellt hat. Ich hätte dies negativ bewertet, wenn ich mehr Punkte gehabt hätte.

2
Das funktioniert nicht? Hast du es versucht? Ich hoffe du verstehst was "LinkID" bedeutet. Ich wäre wirklich überrascht, wenn jemand heutzutage rückständig genug wäre, um ohne jQuery zu js. Wie auch immer, zögern Sie nicht, nach einigen Punkten abzustimmen
Muhammad Waqas Iqbal

3
Ich habe es versucht und der mailTo-Link funktioniert in React Native nicht. Verwenden Sie dies: window.location.href = "mailto: address@gmail.com";
Pilzanthrax

4
Dies funktionierte auch bei mir nicht, wenn ich auf einen aLink klickte . Die Verwendung der [0].click()Version funktioniert, was meiner Meinung nach mit der document.getElementById('yourLinkID').click();Antwort identisch ist .
Mmm

Firefox-Browser: Dies funktioniert für <Eingabe>, aber nicht für einen <a>
jimver04

2

Für mich habe ich es geschafft, dass es so funktioniert. Ich habe den automatischen Klick in 5000 Millisekunden bereitgestellt und die Schleife nach 1000 Millisekunden geschlossen. Dann gab es nur 1 automatischen Klick.

<script> var myVar = setInterval(function ({document.getElementById("test").click();}, 500); setInterval(function () {clearInterval(myVar)}, 1000); </script>

2

Viele der oben genannten Methoden sind veraltet. Es wird jetzt empfohlen, den hier gefundenen Konstruktor zu verwenden

function clickAnchorTag() {
    var event = document.createEvent('MouseEvent');
    event = new CustomEvent('click');
    var a = document.getElementById('nameOfID');
    a.dispatchEvent(event);
}

Dadurch wird auf das Ankertag geklickt, es wird jedoch nicht angezeigt, ob Popupblocker aktiv sind, sodass der Benutzer Popups zulassen muss.


3
Ich verstehe nicht, warum das Ereignis zweimal gesetzt wird. Ich sehe nicht, wie event = new CustomEvent ('click'); ist Referenzereignis, also was ist der Punkt von var ...
historystamp

Ich denke, Sie sind richtig historystamp. Er erstellt ein Mausevent und überschreibt es sofort mit einem neuen Ereignis.
John Lord

1

Können Sie anstelle des Klickens an die URL weiterleiten, zu der der Klick mit Javascript führen würde?

Vielleicht könnten Sie onLoad etwas in den Körper stecken, um dorthin zu gelangen, wo Sie wollen.


Ich habe auf beide Fragen geschrieben, weil die Leute nicht natürlich nach Schaltflächeninformationen suchen, wenn sie sich mit einem "a tag" -Link befassen. Sie sind technisch nicht miteinander verbunden.
Scott Tovey

1

Sie können sie einfach auf eine andere Seite umleiten. Eigentlich scheint es unnötig, es auf einen Link zu klicken und dorthin zu reisen, aber ich kenne nicht die ganze Geschichte.


2
In meinem Fall weiß ich nicht, ob der Link das Ziel "_blank" hat, daher weiß ich nicht, ob ich location.href oder window.open verwenden soll. Es ist kürzer, einen Klick zu versenden. Es gibt Anwendungsfälle, zum Beispiel möchten Sie möglicherweise ein Ereignis wie das Öffnen einer Modalbox auslösen.
Dxvargas

-2

Sie können die Maus des Benutzers nicht dazu bringen, etwas zu tun. Sie haben jedoch die volle Kontrolle darüber, was passiert, wenn ein Ereignis ausgelöst wird.

Was Sie tun können, ist ein Klick auf die Körperlast. W3Schools hat hier ein Beispiel .


6
@Neolit ​​es war ein schlechter Link bevor es sowieso 404'd bekam. Kein Verlust.
John Dvorak

-2

Clientseitige JS-Funktion zum automatischen Klicken auf einen Link, wenn ...

In diesem Beispiel überprüfen Sie den Wert einer versteckten Formulareingabe, die einen vom Server übermittelten Fehler enthält. Ihr clientseitiger JS überprüft dann den Wert und füllt einen Fehler an einer anderen von Ihnen angegebenen Stelle aus Fall ein Popup-Login-Modal.

var signUperror = document.getElementById('handleError')

if (signUperror) {
  if(signUperror.innerHTML != ""){
  var clicker = function(){
    document.getElementById('signup').click()
  }
  clicker()
  }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.