Simulare il click in un qualsiasi elemento del DOM

inserito nella categorie: Javascript
marchiato con i tag: , , , , , ,
Mouse Click

Per chi programma in Javascript, avrà certamente avuto a che fare con gli eventi di un elemento del DOM, e si sarà posto la domanda.. e possibile generarli?
Chiarisco il concetto. Ammettete che dobbiate cliccare un tag a prelevato dal DOM tramite una semplice document.getElementById o in un qualsiasi altro modo; molti utenti su internet rispondono:
Ti basta prelevare la proprietà href, quindi chiamare una window.open in questo modo:
window.open(e.getAttribute("href")).
Si, il metodo funziona.. ma se lo sviluppatore di quel sito ha impostato delle proprietà/funzioni (tramite jQuery o Prototype ad esempio? e quindi risultano insivibili a qualcuno che sta cercando di capire cosa fa quell’elemento?) sulla onclick dell’elemento.. come faccio?
Dopo vani tentativi, ho sviluppato una soluzione comoda, elegante e soprattutto facile da implementare in ogni script.
Il codice qui sotto funziona per un elemento ancora, (tag a) che volete cliccare.. vi basta inserirlo all’inizio del vostro codice, e dal momento che ho usato il prototype dell’HTMLAnchorElement, ogni ancora della finestra dove è stato eseguito lo script sarà ora facilmente cliccabile richiamando element.click()

Per estendere il concetto ad altri elementi, vi basta cambiare HTMLAnchorElement con l’oggetto base del vostro elemento.

Se hai letto questo articolo, potrebbero interessarti anche:

Commenti (6)

  • zambros scrive:

    Ok non ci perdo altro tempo e prendo un’altra strada.
    Grazie lo stesso.

  • Flavio scrive:

    putroppo penso che sia una cosa “normale” che il browser blocchi qualsiasi apertura di pagina che venga eseguita da javascript, che sia una window.open() o un obj.click().. quindi penso che l’unica cosa da fare sia avvisare l’utente di sbloccare i popup.
    Se trovo una soluzione lieto di aiutarti comunque!

  • zambros scrive:

    Grazie della risposta. Diciamo che funziona solo che ho lo stesso inconveniente che la nuova pagina viene “bloccata” dal browser perché vista come pop-up.
    Il mio intento è quello di riuscire ad aprire una nuova pagina (subito o dopo un tot di secondi, non importa) di un determinato percorso SENZA che il browser mi impedisca l’apertura.
    Sai darmi qualche dritta?
    Grazie molte.

  • Flavio scrive:

    Ciao @zambros, ti basta incollare il codice nell’articolo:

    HTMLAnchorElement.prototype.click = function (){
    	var e = document.createEvent("HTMLEvents");
    	e.initEvent("click",true,true);
    	return !this.dispatchEvent(e);
    }
    

    per rendere “agibile” il metodo click di qualsiasi (Anchor).
    Quindi usare il codice:

    $("#link_disponibilita_data_blank")[0].click();
    

  • zambros scrive:

    Ho cercato di postare l’esempio ma il codice del link me lo ha trasformato in un vero e proprio link.

  • zambros scrive:

    Ciao vorrei simulare il click di un href attraverso jquery. Non voglio usare workaround con window.location o window.open, ma proprio come se l’utente cliccasse il mio elemento A:
    So che l’esempio sottostante NON funziona perché l’oggetto A non ha nessuna impostazione sull’evento onclick. Ho trovato interessante il tuo post ma non riesco ad applicarlo al mio Esempio.

    RICERCA PER DATA


    JAVASCRIPT

    $(function() {
    $(“#link_disponibilita_data_blank”).click();

    });

Commenta anche tu!