Come faccio a fare clic programmaticamente su un collegamento con JavaScript?


Risposte:


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

18
In realtà, finora ha funzionato in tutti i browser che ho provato, inclusi IE, Safari, Chrome, Firefox e Opera.
Arik

5
Se il collegamento ha target="_blank"proprietà, il blocco popup del browser verrà attivato per la nuova finestra.
venerdì

45

Questa funzione è attiva almeno in Firefox e Internet Explorer. Esegue tutti i gestori di eventi collegati al collegamento e carica la pagina collegata se i gestori di eventi non annullano l'azione predefinita.

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 ha ragione e stackoverflow.com/questions/809057/… ha qualche informazione in più sul perché. Cross browser è divertente :)
Dan F,

4
non rispetta l' targetattributo o<base target="frame">
Vitim.us

38

Se vuoi solo cambiare l'indirizzo della pagina corrente, puoi farlo semplicemente facendo questo in Javascript:

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

53
Votato perché non mi piacciono le risposte che rispondono al caso d'uso piuttosto che affrontarlo. "Presumo che questa sia la tua intenzione, e non sono consapevole dei tuoi vincoli, quindi con una sfera concettuale in un vuoto concettuale: usa questo".
cazlab,

11
Ho votato perché cercavo una buona soluzione per fare clic sul mailto:collegamento nello script userjs. Sicuramente mi ha fatto risparmiare tempo. Ero pronto a creare aelementi e a fare un "clic programmatico" stackoverflow.com/questions/809057/…
AD

6
Anch'io ho provato a chiamare il click()metodo proposto altrove e sopra e non ha funzionato in IE9, ma l'impostazione ha location.hrefeffettivamente inviato l'e-mail dal mailto:link. Ottima soluzione!
ajeh

Questo metodo è stato utile in PyQT4. click () call non funzionava per me. Grazie!
VilleLipponen,

Non risolve il mio caso d'uso che si trova nella domanda, in cui desidero fare clic su un collegamento. Il link non porta da nessuna parte, ma ha altre cose legate all'evento click. Non voglio cambiare posizione.
Elefante casuale

17

Semplicemente così:

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

o al caricamento della pagina:

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

2
Sì, ma poi deve avvenire qualche altro clic.
Ólafur Waage,

2
Non puoi farlo in nessun caso, come il caricamento della pagina?
Bill the Lizard,

2
grazie per l'aiuto, ma sto usando Firefox 3 e non funziona, nella console degli errori dice Errore: document.getElementById ("myLink"). Il clic non è una funzione

Sembra che Firefox non supporti il ​​metodo click. e la maggior parte delle risposte, compresa la mia, non sono utili :)
Canavar,

@Canavar: prova a fare clic anziché a clic
Stefan Steiger,

9

Il modo jQuery per fare clic su un collegamento è

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

Per mailTo link, devi scrivere il seguente codice

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

2
Questo non funziona. Questa non è la risposta alla domanda che mi ha posto. Avrei dato un aspetto negativo per questo se avessi avuto qualche punto in più.

2
Questo non funziona? L'hai provato? Spero che tu capisca cosa significa "LinkID". Sarei davvero sorpreso se qualcuno oggi è abbastanza arretrato rispetto a js senza jQuery. Ad ogni modo, sentiti libero di votare dopo aver guadagnato alcuni punti
Muhammad Waqas Iqbal

3
Ho provato questo e il link mailTo non funziona in React Native. Utilizzare questo: window.location.href = "mailto: address@gmail.com";
fungusanthrax

4
Questo non ha funzionato nemmeno per me facendo clic su un acollegamento. L'uso della [0].click()versione funziona, che credo sia uguale alla document.getElementById('yourLinkID').click();risposta.
Mmm

Browser Firefox: funziona per <input> ma non per un <a>
jimver04

2

Per me, sono riuscito a farlo funzionare in quel modo. Ho distribuito il clic automatico in 5000 millisecondi e poi ho chiuso il ciclo dopo 1000 millisecondi. Quindi c'è stato solo 1 clic automatico.

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

2

Molti dei metodi sopra elencati sono stati deprecati. Si consiglia ora di utilizzare il costruttore trovato qui

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

Ciò farà clic sul tag di ancoraggio, ma non mostrerà se i blocchi popup sono attivi, quindi l'utente dovrà consentire i popup.


3
Non capisco perché l'evento venga impostato due volte. Non vedo come event = new CustomEvent ('click'); è un evento di riferimento, quindi qual è il punto di var ...
historystamp

penso che tu sia il palcoscenico corretto. Sta creando un evento mouse e lo sovrascrive immediatamente con un nuovo evento.
John Lord,

1

Invece di fare clic, è possibile inoltrare all'URL che il clic dovrebbe utilizzare JavaScript?

Forse potresti mettere qualcosa nel corpo su Caricamento per andare dove vuoi.


Ho pubblicato entrambe le domande perché le persone non cercheranno naturalmente le informazioni sui pulsanti quando hanno a che fare con un link "a tag". Sono tecnicamente indipendenti.
Scott Tovey,

1

Potresti semplicemente reindirizzarli su un'altra pagina. In realtà farlo letteralmente fare clic su un collegamento e raggiungerlo sembra unnessace, ma non conosco l'intera storia.


2
Nel mio caso, non so se il link ha come target "_blank", quindi non so se dovrei usare location.href o window.open. È più breve inviare un clic. Ci sono casi d'uso, ad esempio potresti voler lanciare un evento come aprire una modalbox.
dxvargas,

-2

Non puoi fare in modo che il mouse dell'utente faccia qualcosa. Ma hai il pieno controllo di ciò che accade quando si innesca un evento.

Quello che puoi fare è fare un clic sul carico corporeo. W3Schools ha un esempio qui.


6
@Neolit ​​era un brutto collegamento prima di ottenere comunque 404. Nessuna perdita.
John Dvorak,

-2

Funzione JS lato client per fare clic automaticamente su un collegamento quando ...

Ecco un esempio in cui si controlla il valore di un input di modulo nascosto, che contiene un errore trasmesso dal server .. JS lato client quindi ne controlla il valore e popola un errore in un'altra posizione specificata ... in questo caso un modale di accesso pop-up.

var signUperror = document.getElementById('handleError')

if (signUperror) {
  if(signUperror.innerHTML != ""){
  var clicker = function(){
    document.getElementById('signup').click()
  }
  clicker()
  }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.