Visualizzazione dei risultati da 1 a 6 su 6

Discussione: trigger click

  1. #1

    trigger click

    Ciao a tutti,
    ho un problema su un sito WordPress con Elementor come editor.
    Vorrei che alla fine del caricamento della pagina, attraverso un comando jQuery, venga fatto un click su un elemento in modo da scatenare l’evento per l’apertura di una specie di fisarmonica.
    Così ho scritto il mio piccolissimo codice, prima della chiusura del body.
    codice:
    <script>
       jQuery(“#elemento”).trigger(“click”);
    </script>
    Carico la pagina, ma non succede nulla.
    Il bello è che se scrivo il codice nella console di firefox e premo “esegui”, l’evento viene scatenato correttamente.

    Evidentemente mi sfugge qualcosa.
    Potete aiutarmi a capire? grazie.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, il tuo script ha degli errori di sintassi (virgolette oblique) ma se, come hai indicato, riesci ad eseguirlo da console, deduco che quelle virgolette siano dovute al copia-incolla qui sul forum.

    Escludendo quindi che ci siano errori di sintassi, presumo che l'elemento in questione sia creato dinamicamente in qualche modo, e che questo non sia ancora presente nel momento in cui esegui il tuo script, anche se a fine body.

    Potresti verificarlo con un semplice console.log(jQuery('#elemento')[0]) messo a fine body prima di quella tua riga di script.

    Se l'elemento esiste allora dovrebbe restituirtelo in console, altrimenti ti restituirà undefined.

    In quest'ultimo caso bisognerebbe verificare come e quando viene creato tale elemento e quindi capire se sia possibile lanciare il tuo script, in qualche modo, quando l'elemento è disponibile sulla pagina.

    Per ipotesi, l'elemento potrebbe anche essere disponibile ma il gestore del suo evento click potrebbe venirgli applicato in seguito.

    Per comprendere meglio bisognerebbe vedere la pagina in azione, altrimenti si possono solo fare ipotesi.

    Ad ogni modo, una "mezza soluzione" può essere quella di lanciare il tuo script in modo differito, usando un semplice setTimeout.
    <script>
    setTimeout(function(){
    jQuery('#elemento').trigger('click');
    }, 10);
    </script>
    E' comunque una pezza, da prendere con le pinze; ripeto, bisognerebbe vedere la pagina per poter verificare cosa avviene e formulare delle soluzioni in modo adeguato.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Ciao,
    grazie per l'aiuto.
    Ho seguito il tuo consiglio di di usare console.log per vedere se l'elemento è presente nella pagina nel momento in cui lancio il comando.
    in console ricevo l'html dell'elemento, quindi immagino che mettere lo script prima della chiusura del body, sia la cosa giusta.
    Ho anche provato ad impostare il timeout come mi hai suggerito ma non ho ottenuto il risultato sperato.

    Avevo provato anche con (document).ready senza successo. Purtroppo il sito è in localhost non so come farlo vedere adesso ... al max potrei girare un piccolo video ma penso che non servirebbe.

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    al max potrei girare un piccolo video ma penso che non servirebbe.
    no, infatti, probabilmente non servirebbe a molto.

    Se con console.log ricevi il riferimento a tale elemento, vuol dire che in quel punto/momento è presente tale elemento. Bisogna verificare dove e quando l'evento click viene impostato per tale elemento. Verificare se il gestore è applicato in modo diretto o se in modo delegato e capire se sia possibile lanciare il tuo trigger dopo tali azioni.

    Non è chiaro come venga costruita quella "specie di fisarmonica" di cui parli.

    Non è semplice effettuare tali verifiche se non si ha la pagina di fronte, perciò è difficile aiutarti in questa situazione.

    Prova eventualmente ad aumentare il valore dei millisecondi nel timeout, giusto per vedere se succede qualcosa. Anziché 10, provava a mettere ad esempio 2000 (cioè 2 secondi) e verifica se dopo 2 secondi avviene quel click.

    Chiaramente, verifica anche se non ricevi altri errori di script in console.

    Non è possibile aiutarti maggiormente se non chiarisci il contesto e se non si può verificare direttamente lo scenario.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Ciao,
    ho seguito il tuo consiglio ed impostato 200 (ma per sicurezza metto 500) ed ha funzionato! nessun errore in console ... grazie mille per il tuo prezioso aiuto.
    Quindi, giusto per capire, quando si lancia il comando all'interno di (document).ready, il senso non è quello di attivare il comando dopo che la pagina è stata caricata tutta?
    Bè ovviamente ci saranno tanti altri script appartenenti ai vari plugin racchiusi all'interno del
    (document).ready, ma pensavo che venissero eseguiti in ordine di lettura da parte del browser, comprendendo prima o poi questo mio comando ... boooo

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    ho seguito il tuo consiglio ed impostato 200 (ma per sicurezza metto 500) ed ha funzionato!
    Bene ma, ripeto, questa potrebbe essere giusto una soluzione momentanea, ti consiglio di non usarla in fase di pubblicazione. Piuttosto bisognerebbe valutare meglio quando e dove l'evento click, in questione, viene applicato; così da poter lanciare il tuo script in modo efficace.

    (document).ready, il senso non è quello di attivare il comando dopo che la pagina è stata caricata tutta?
    [...]
    ma pensavo che venissero eseguiti in ordine di lettura da parte del browser
    Sostanzialmente è così ma la questione potrebbe non essere così semplice; possono esserci degli script eseguiti in modo asincrono o dopo un qualche altro evento, per cui non si può trattare l'argomento in modo generalizzato.

    Quell'evento click, che vuoi triggerare, potrebbe essere applicato in chissà quale momento. Inutile ripeterti che bisognerebbe vedere la pagina in azione e analizzare l'intero contesto per capire cosa sta avvenendo esattamente.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.