Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    funzioni JS non vanno se richiamate da contenuti caricati via AJAX

    Ho una pagina in cui una parte dei contenuti viene richiamata via via, attraverso una request AJAX. Però alcune funzioni JS non vanno, quando richiamate da questi contenuti.
    Faccio un esempio. Nella pagina, utilizzo la funzione JS smoothscroll, che fa scorrere la pagina all'ancora in modo morbido, invece che portarcela di scatto.
    Se clicco un link ad un ancora che si trova tra i contenuti caricati sin dall'inizio nella pagina, la pagina stessa scrolla all'ancora con l'effetto smooth, ma se invece clicco un link ad un ancora che si trova tra i contenuti caricati successivamente via AJAX, allora va all'ancora di scatto.
    Non capisco perchè, e soprattutto non so come risolvere questo problema - non tanto per lo smoothscroll, quanto per un'altra funzione JS che mi serve necessariamente...
    Qualche idea e/o suggerimento??
    metatad
    graphic & web design

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    A parte il fatto che nell'elenco ci sono due voci diverse che puntano alla medesima pagina
    # eseguire gli script contenuti nel responseText
    # eseguire istruzioni javascript presenti in contenuto caricato via ajax

    comunque da quel thread non è uscita alcuna soluzione al problema, quindi non è che mi aiuti molto...
    metatad
    graphic & web design

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da metatad
    quindi non è che mi aiuti molto...
    Mi spiace, io ci ho provato
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    lo so, grazie...
    metatad
    graphic & web design

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Continuo a sbattere la testa su questo problema... c'è qualcosa di strano, che non riesco a capire, perchè poi questo problema si presenta in maniera... asimmetrica.
    Mi spiego.
    Ho una pagina che carica una serie di schede. Ne carica un tot, poi le successive le carica via request AJAX, man mano che la pagina scrolla.
    Le schede (tutte uguali nella struttura) contengono ciascuna dei link che richiamano tre diverse funzioni JavaScript.
    Una è un semplice smoothscroll; il relativo file JS e caricato inizialmente nella pagina così:
    Codice PHP:
    <script src="smoothscroll.js" type="text/javascript"></script> 
    (peraltro, ho provato anche a metterlo per esteso in pagina...).
    Un'altra è uno slide JQuery (loopedSlider), che permette uno slide orizzontale di layer diversi, all'interno della scheda. Questa funzione - che usa JQuery richiamandolo come file esterno - è scritta in pagina.
    La terza è un classico show/hide con effetto slide; anche questa è scritta in pagina.
    Quando, con la request AJAX, carico in pagina le nuove schede, lo smoothscroll richiamato dall'interno di una di queste non funziona - cliccando un link che va ad un'ancora, ci va di scatto.
    Stessa cosa per loopedSlider: il primo div della serie non viene nemmeno mostrato (anche se è caricato nella pagina), e cliccando su una delle miniature che pilotano lo slide stesso la pagina scatta al top (senza, ovviamente, che lo slide funzioni).
    Incredibilmente, invece, l'effetto show/hide funziona regolarmente!
    Tutto questo, ripeto, solo se le funzioni vengono richiamate dalle schede caricate successivamente, via request AJAX.
    Dunque: non è problema di funzionamento di JavaScript quando caricato successivamente, perchè almeno uno funziona; non dipende dal fatto che il JS sia caricato esternamente o scritto in pagina, perchè quelli presenti per esteso nella pagina sono due, ed uno va mentre l'altro no...
    Allora, cosa diav.....?!?
    Aiutooooooooooo
    metatad
    graphic & web design

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se uno script valuta il contenuto del documento onload o quando esso e' a disposizione (DOMready) normalmente non terra' conto di elementi aggiunti in un secondo tempo

    jquery risolve il problema fornendo la possibilita' di settare gestori evento anche per elementi non ancora presenti al momento della valutazione
    http://api.jquery.com/live/

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Grazie!!! Speriamo che sia la soluzione!...
    metatad
    graphic & web design

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.