Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    [JQUERY] evento su elemento <a> forse intercettato da un altro listener

    Ciao a tutti,

    sto impazzendo con una problematica abbastanza urgente:

    ho un elemento html <a href="?mappa=italia.gif&immagine=12"> su cui ho registrato un listener:
    codice:
    $('area[href^="?mappa="],a[href^="?mappa="]').on("click",function(event){ 
            event.preventDefault(); 
                    console.log("ok");         
    return false;     });
    Ho fatto una prova scrivendo solo la riga html e lo script jquery e funziona tutto regolarmente, ovvero viene stampato sulla console ok.

    Ma quando provo sulla macchina in produzione, con tutto il codice, viene caricata la pagina contenuta nel attributo href, la parte di script non viene neanche presa in considerazione(non stampa nella console "ok"), perché presumo che l'evento venga intercettato precedentemente da un'altra porzione di codice.

    La domanda è la seguente: c'e' un modo di vedere esattamente cosa succede facendo click sull' elemento 'a' prima che passi all'altra pagina?
    Con la console di chrome non ho la possibilità di vederlo, mi viene caricata direttamente l'altra pagina, esiste un plugin di chrome por questo scopo?

    È abbastanza urgente, ringrazio per qualsiasi suggerimento!

    Grazie,
    Roberto

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, puoi postare il link alla pagina pubblica?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao, puoi postare il link alla pagina pubblica?
    Purtroppo non è possibile l'accesso dall'esterno!

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Purtroppo da ciò che hai indicato non è semplice capire dove sta il problema, è possibile fare solo delle supposizioni.

    Per il momento mi vengono in mente due possibili cause:

    E' possibile che l'elemento <a> in questione non sia stato ancora creato sul DOM nel momento in cui viene eseguito quello script. In questo caso il selettore jQuery non andrà a pescare niente e non assegnerà il listener. Assicurati quindi di avere lo script dentro ready o in fondo al body.

    E' possibile che ci sia qualche altro errore nel resto dello script, in tal caso la parte che hai specificato potrebbe non essere eseguita. Controlla sulla console che non saltino fuori errori riguardo lo script.

    Se usi opportunamente la console web del tuo browser non credo ci sia bisogno di ulteriori plugin (IMHO).

    Se ancora non riesci, prova a postare l'intero codice sorgente (html) della pagina incriminata.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Se usi opportunamente la console web del tuo browser non credo ci sia bisogno di ulteriori plugin (IMHO).

    ...c'e' modo di "monitorare" un click su un elemento <a> prima che cambi pagina con la console?

    Non riesco a farlo, non so come fare il debug in questo caso, per seguire il suo "flusso naturale"!

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da robynosse Visualizza il messaggio
    ...c'e' modo di "monitorare" un click su un elemento <a> prima che cambi pagina con la console?

    Non riesco a farlo, non so come fare il debug in questo caso, per seguire il suo "flusso naturale"!
    Direi di no, quando scatta l'evento c'è contestualmente il cambio pagina pertanto documento nuovo e la console non può monitorare qualcosa che non esiste più.
    Non so a cosa ti serve questo processo ma dubito che sia la strada corretta
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ascolta, se mi dai retta posso aiutarti, altrimenti lascio che risponda qualcun altro.
    Lascia perdere il fatto che tu non riesca a monitorare il click, se il listener non viene intercettato significa al 99,99% che non è stato assegnato.

    Andando per ordine, prova a mettere un log del genere esattamente prima dello script che hai postato:
    codice:
    console.log($('area[href^="?mappa="],a[href^="?mappa="]'));
    $('area[href^="?mappa="],a[href^="?mappa="]').on("click",function(event){ 
            event.preventDefault(); 
                    console.log("ok");         
    return false;     });
    Sulla console dovresti ottenere un oggetto jQuery in cui ci trovi una proprietà length. Se ha valore 0 significa che il selettore non ha trovato niente. Fammi sapere.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ascolta, se mi dai retta posso aiutarti, altrimenti lascio che risponda qualcun altro.
    Lascia perdere il fatto che tu non riesca a monitorare il click, se il listener non viene intercettato significa al 99,99% che non è stato assegnato.
    Secondo me hai perfettamente ragione, il problema sta sicuramente nel fatto che non è ancora stato caricato l'elemento per cui non posso assegnargli un listener prima di caricarlo.
    Avrò accesso al codice sorgente domani mattina e farò la prova che mi hai detto, poi ti farò sapere.

    Grazie!

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Questa mattina ho potuto accedere al codice sorgente.

    Il problema era che gli elementi con il tag <a> venivano creati dinamicamnete con Jquery dopo del listener sugli stessi.
    È bastato aggiungere, dopo la creazione "dinamica" degli anchor text, il listener su questi stessi tag(con Jquery) e adesso funziona tutto regolarmente!

    Grazie,
    Roberto

  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Bene. Non voglia essere una polemica ma giusto per mettere i puntini sulle i e dare qualche consiglio, sei stato poco chiaro fin dall'inizio. Non avevi specificato che si trattava di elementi creati in modo dinamico (era una cosa rilevante da indicare), ma da ciò che hai indicato si dava per scontato che tu avessi già quell'elemento sulla pagina:
    ho un elemento html <a href="?mappa=italia.gif&immagine=12"> su cui ho registrato un listener:
    Giusto un consiglio, quando fai delle richieste sui forum cerca sempre di essere il più dettagliato possibile fin dal primo post. Per di più hai anche specificato che era urgente, cosa che è sempre meglio evitare di scrivere perché non ti da nessuna priorità rispetto agli altri utenti, anzi ti fa apparire più antipatico (come se pretendessi qualcosa).

    Tornando all'oggetto della discussione, non ho capito esattamente come hai risolto, ad ogni modo una tecnica solitamente usata è quella di delegare l'evento, con una cosa del genere:
    codice:
    $("body").on("click", 'area[href^="?mappa="],a[href^="?mappa="]', function(event){ ...
    In questo modo il listener sarà assegnato a tutti gli elementi (specificati dal selettore) anche se creati successivamente.

    Buon proseguimento.
    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.