PDA

View Full Version : [jquery/javascript] problema onload -document.ready


loop4633
17-10-2012, 21:30
Ciao a tutti, mi trovo davanti un problema e non riesco a capire come posso risolvere, spero qualcuno possa darmi una mano.
Dunque, ho una pagina slider.jsp che non fa altro che visualizzare le immagini che ho all'interno dell'album precedentemente selezionato, in questa pagina ci sono due funzioni javascript rispettivamente assegnaVettore() e avanti() che vengono chiamate nel body con onload che si occupano rispettivamente di assegnare i dati provenienti dalla servlet ad un vettore javascript e visualizzare l'immagine! Adesso il problema sorge quando inserisco uno script jquery che dovrebbe permettermi di inserire e prelevare i tag effettuati sull'immagine, diventa un problema poichè la funzione dovrebbe essere chiamata con

(document).ready(function(){....

ma ovviamente avendo onload nel body non posso usare la document.ready
Ovviamente neanche a dirlo non mi funziona neanche la (window).load, quest'ultima non mi da errore ma il tag sull'immagine non parte, a dire il vero neanche la .ready mi restituisce alcun errore, ma caricandosi prima dell'onload del body fa si che non vedo l'immagine ma posso fare il tag :(
Ho già provato a creare una funzione javascript che contiene all'interno le funzioni jquery in modo da richiamarle alla fine della funzione avanti() che carica l'immagine... niente da fare!

Qualcuno sa e vuole aiutarmi?

wingman87
17-10-2012, 22:17
Ciao, avrei voluto aiutarti, e credo anche di essere in grado... ma dalla tua spiegazione non ho capito praticamente nulla :D
Una cosa che ho notato è che nel codice hai dimenticato il $ di jquery. Ma a parte questo, se spiegassi un po' meglio cosa vorresti ottenere e se postassi anche il codice già esistente forse potrei darti una mano.

loop4633
17-10-2012, 22:30
ahhahahahahahahaah allora vediamo se riesco a essere un po più chiaro semplifico un po il discorso e ti posto il codice in fondo al post.
il $ non l'ho dimenticato... ho scritto a grandi linee... vengo al dunque
Io ho una pagina slider.jsp con una funzione javascript x che mi permette di visualizzare le immagini presenti all'interno di un album, nel body di questa pagina troviamo onload="x()" in modo che possa essere visualizzata la prima immagine dell'album all'avvio.
Ho necessità di consentire all'utente la possibilità di effettuare dei tag sulla foto, per questo uso una funzione jquery che dovrebbe essere caricata all'avvio della pagina che tramite un'altra pagina jsp mi permette di fare spuntare un riquadro in cui posso inserire e memorizzare il mio tag. Il problema sta proprio nel fatto che la funzione jquery viene chiamata con $(document).ready che va in contrasto con onload presente nel body e questo mi impedisce di effettuare i tag sull'immagine. Spero di essere stato lo 0.5% più chiaro di prima, purtroppo non so come spiegare meglio, la cosa è un po contorta, pubblico il codice magari ci capiamo meglio.

Eccolo -> http://nopaste.info/cb1ad836cc.html

wingman87
17-10-2012, 23:10
Ok, ora penso di aver capito :)
Supponendo che tu stia usando: http://djpate.com/2011/01/14/jtag-a-jquery-plugin-to-tag-pictures-more/
Mi pare di capire che non è tanto rilevante che l'immagine sia stata caricata, l'importante è avere un img su cui richiamare tag(). Quindi che tu lo richiami al load o al ready non dovrebbe cambiare nulla.
Nel tuo caso quindi il problema si riduce a richiamare tag() sulla prima immagine al ready e poi richiamare tag() nuovamente quando si passa all'immagine successiva o precedente.
Questa è la mia analisi della situazione. Passando al codice, non potendolo provare e non avendo il tempo di leggerlo e capirlo tutto, ti dico solo una cosa molto importante che ho notato: quando richiami tag() lo fai su $("#img") ma la tua immagine non ha id "img", bensì "foto".
Spero di averti dato informazioni sufficienti per poter risolvere

loop4633
18-10-2012, 08:12
Ovviamente la stanchezza gioca brutti scherzi dovevo commentare la funzione tag(), se vedi jquery è ripetuto sopra fra i tag script. Il problema è che se includo il codice all'interno della funzione tag() e la chiamo quando mi serve non mi genera errore sulla pagina ma non funziona, mentre se rimuovo la funzione tag() e inserisco jquery fra i tag script e la carico con $(document).ready mi carica lo script prima dell'immagine, questo fa si che l'immagine non si vede e mi viene permesso il tag sulla pagina vuota!

Per quanto riguarda #img dovrebbe prendermi tutti i tag <img....> ma avendone io uno solo il problema è risolto...

wingman87
18-10-2012, 20:18
Ho preso la tua pagina e ne ho estrapolato una pagina statica, poi ho pacioccato un po' col js per riuscire a farla funzionare.
Purtroppo il plugin tag ha qualche difetto: non puoi stilare le dimensioni dell'immagine, devi tenere le dimensioni originali. Inoltre non funziona se le immagini non le carichi tutte all'inizio. Questa seconda limitazione mi sembrava eccessiva, quindi ho scaricato il codice del plugin e ho fatto una piccola modifica.
Ti allego lo zip con il risultato. Se hai bisogno di spiegazioni chiedi pure :)

PS: nello zip non ho incluso la cartella images perché altrimenti lo zip diventava troppo grande per il forum, comunque dovresti già avere quella cartella con gli stessi contenuti.

loop4633
18-10-2012, 21:55
Rieccomi, intanto non posso che ringraziarti per il lavoro che hai fatto, ti faccio anche i complimenti per la pulizia del codice, veramente impressionante. Per il resto questo pom ho optato per un'altra soluzione dato che su quel tag mi dava problemi l'oggetto json e l'errore era palesemente anomalo... dal momento che sto inglobando molte cose e sai meglio di me che gli errori non sono di facili da scovare dati i linguaggi molto impastati come javascript ho optato dopo qualche ora di revisione codice di cambiare script per il tag. Ne ho preso uno che era in php l'ho portato tutto in jsp jquery e ajax e messo a solo funziona perfettamente (ovviamente i tag devo memorizzarli sul database per questo ho fatto tutto sto casino) appena lo inserivo nello slider avevo sempre il classico problema di ieri, stasera ho letto il tuo codice e ho inglobato tutto là dal momento che è fatto veramente bene e toglie i problemi dell'onload... ho messo lo script jquery in un file a parte solo che ho modificato un po per creare la funzione .tag da richiamarmi poi nello slider ma dal momento che non conosco bene jquery credo di aver fatto qualche cavolata che non fa partire lo script, magari se hai voglia e tempo e potresti dargli uno sguardo te ne sarei molto grato. Lo lascio in allegato, grazie ancora :)

loop4633
19-10-2012, 11:06
Niente, la stanchezza della sera non porta mai bene, ho risolto il problema non era jquery, grazie infinite per il tuo aiuto wingman87 :)