Precedente :: Successivo |
Autore |
Messaggio |
A&O Eroe in grazia degli dei


Registrato: 02/01/08 22:19 Messaggi: 130
|
Inviato: 27 Nov 2009 18:47 Oggetto: * Inserire due script javascript in una pagina web. |
|
|
Ciao a tutti,
è la prima volta che posto in questa sezione dei forum di olimpo informatico.
Sono un neofita ina materia e mi do da fare (con i miei mezzi) a creare pagine web con scarsa conoscenza della materia ma armato di buona volontà, desiderio di apprendere ecc.
Spero ce questa mia richiesta non alteri la sensibilità di chi, più esperto, tollera a fatica questi (lo ammetto) a volte grossolani tentativi...
Il problema.
In una pagina web che sto creando volevo inserire un menù creato con javascript chiamato Menu/accordion con MooTools (la demo è visibile qui: link ). Ho inserito il codice nella pagina e il relativo file.js nella cartella sorgente e tutto funziona.
Successivamente ho voluto inserire un secondo script, sempre in javascript, relativo ad un effetto di slideshow di immagini (articolo e codice in questa pagina link. Sistemato anche qui il codice e i file ho notato, dopo vari tentativi (molto a caso) che l'uno impedisce il funzionamento dell'altro. Mai si è verificato il funzionamento di entrambi gli effetti in contemporanea.
È possibile questa coesistenza di due codicI?
In caso affermativo riuscite a dirmi dove si innesca l'errore?
A questo LINK trovate un file di testo con il codice, per ora inserito della pagina.
Grazie |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11809 Residenza: Tokelau
|
Inviato: 27 Nov 2009 19:03 Oggetto: |
|
|
può darsi che capiti che in entrambi gli script si crei un riferimento ad una stessa variabile, o che venga definita una medesima funzione.
Come trovare il responsabile, però, non saprei suggerirtelo. Potresti provare mettendo prima solo il più lungo dei due script, provare se funziona, poi aggiungere una piccola parte del secondo, controllare se funziona ancora il primo e avanti così finché il primo non si guasta. A quel punto hai 'isolato' il responsabile, si può trovare una soluzione...
 |
|
Top |
|
 |
A&O Eroe in grazia degli dei


Registrato: 02/01/08 22:19 Messaggi: 130
|
Inviato: 27 Nov 2009 19:07 Oggetto: |
|
|
Grazie per la tempestività.
Citazione: | Potresti provare mettendo prima solo il più lungo dei due script, provare se funziona, poi aggiungere una piccola parte del secondo, controllare se funziona ancora il primo e avanti così finché il primo non si guasta. |
I due script funzionano perfettamente da soli. Cosa vuol dire però aggiungere una piccola parte? Come posso capire il modo per dividere in parti uno script?
Grazie |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 27 Nov 2009 21:25 Oggetto: |
|
|
Il problema è un po' bastardo.
Il tutto nasce dal fatto che usi due framework mootools per il menù e jquery per gli effetti; entrambi usano la funzione $() quindi si rompono a vicenda.
Devi sovrascrivere il namespace globale di jquery.
Qui la documentazione di jquery spiega come fare.
Ti ritroverai a dover modificare il codice che crea gli effetti sulle immagini con la nuova variabile ossia ogni volta che nel codice js appare una roba tipo:
dovrai sostituire con (seguendo l'esempio del link che ho postato)
E' sempre un po' rognoso mischiare più librerie anche se a volte non si può fare altrimenti. |
|
Top |
|
 |
A&O Eroe in grazia degli dei


Registrato: 02/01/08 22:19 Messaggi: 130
|
Inviato: 27 Nov 2009 23:18 Oggetto: |
|
|
Non ci sono......
Ho letto l'articolo e in base a quello che ho compreso ho fatto questo (correggimi dove ho sbagliato):
Ho inserito nell'head lo script: Codice: | <script>
var $j = jQuery.noConflict();
// Use jQuery via $j(...)
$j(document).ready(function(){
$j("div").hide();
});
// Use Prototype with $(...), etc.
$('someid').hide();
</script> |
Nello script relativo alle immagini ho mutato $(...) in $j(...)
Ma non funziona......
Prima era attivo solo l'effetto delle immagini (no quello del menu). ora nessuno dei due.
Dove sbaglio?
Grazie
-----------------------------------
HO RISOLTO!!!!
Grazie alla tua segnalazione, che forse non avevo ben compreso, ho fatto ulteriori ricerche sui conflitti che coinvolgono jquery ho trovato questo artcolo.
Quindi ho inserito nell'head dapprima gli script jquery ai quali ho fatto seguire Codice: | <script type="text/javascript">
$j = $; //rename $ function
</script>
|
e di seguito lo script relativo a Mootools.
Probabilmente, non comprendendo cosa stavo facendo, l'errore stava nella scrittura dello script jquery.NoConflict.
Non che ora abbia compreso qualcosa in più ma...
Tutto funziona a meraviglia!!!
Non so come ho fatto ma sono strafelice!
Grazie! |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 28 Nov 2009 19:25 Oggetto: |
|
|
Mah, in teoria doveva quello che ho linkato. Però non dovevi usare lo script dell'esempio del link, ossia:
Codice: |
<script>
var $j = jQuery.noConflict();
// Use jQuery via $j(...)
$j(document).ready(function(){
$j("div").hide();
});
// Use Prototype with $(...), etc.
$('someid').hide();
</script>
|
ma limitarti a:
Codice: |
var $j = jQuery.noConflict();
|
che ridefinisce il namespace globale di jquery.
Dopo aver fatto quello dovevi sostituire nel tuo script il $(..) con $j(...).
Comunque se anche con la pura assegnazione di $j=$ il tutto funge, bene.
Non so però se in altri casi basterà, in realtà non ho scartabellato il metodo noConflict() quindi di preciso non so quello che fa.
Comunque grazie al tuo intervento ho scoperto un effetto che mi tornerà utile tra qualche giorno!
Bau |
|
Top |
|
 |
|