jQuery e Prototype: librerie in conflitto

scritto da Davide Salerno29 gennaio 2007

in Programmazione

Oggi ho finalmente scoperto che cosa mi impediva di utilizzare alcune funzioni di contorno contemporaneamente per abbellire graficamente il blog con effetti molto web duepuntozero. Veniamo al dunque perchè è già tardi e l’acqua è poca e la papera non galleggia.

Come avevo anche scritto tempo fa ogni tanto le foto che inserisco nei post sono visualizzabili tramite effetto Thickbox. Questo script per ingrandimenti e finestre modali AJAX-powered ha il grande pregio di utilizzare una libreria javascript molto leggera che si chiama jQuery ma che permette di ottenere gli stessi effetti che si possono avere con il più famigerato Lightbox che utilizza al contrario diverse librerie molto più pesanti e nello specifico Prototype e Scriptaculous. Così posso avere fantasmagorici effetti web duepuntozero ed contemporaneamente pagine da caricamento più rapido per venire incontro a coloro che non hanno una connessione ad internet a banda larga.

L’altro giorno leggendo un post di Vittorio che a sua volta citava Giovy che a sua volta ringraziava Davidonzo, noto l’uscita di un nuovo plugin per Wordpress, Share-This, che permette di nascondere tutte le classiche iconcine che fino a poco tempo fa erano presenti al piè di ogni post dietro l’unica che ora vedete a fianco della scritta condividi.

Se sei un attento lettore del blog ed un assiduo fruitore dei network per il social bookmarking avrai notato che fino a oggi prima delle ore 17 cliccando su quei link venivi reindirizzato ad una nuova pagina da cui potevi poi andare ad inserire il post sul servizio tra quelli a disposizione che più ti era congeniale (lo stesso problema che a quanto pare ha Antonio Sofi). Ora invece noterai che come clicchi sul link ti compare un gradevole popup stile web duepuntozero come sui siti degli amici che ho citato sopra.

Il problema era dovuto al fatto che il mio tema che è una versione customizzata di K2 ed il plugin Share-This hanno bisogno per il loro funzionamento della libreria Prototype che non va proprio d’accordo con jQuery. La soluzione più semplice era rinunciare a Thickbox per Lightbox, però quest’ultimo oltre ad essere più pesante non mi piace neanche molto. Quindi se anche tu hai lo stesso problema di far convivere le due librerie Prototype e jQuery per ora incompatibili l’una con l’altra prendi carta e penna e segnati quanto segue.

Caricando nel seguente ordine i due script e utilizzando il seguente codice:

<script type="text/javascript"  xsrc="jquery.js"></script>
<script type="text/javascript">
JQ = $;  //rename $ function
</script>
<script type="text/javascript" xsrc="prototype.js"></script>

Così facendo ed andando successivamente a sostituire tutte le chiamate alle funzioni messe a disposizione dalla libreria jQuery utilizzando il suffisso JQ al posto del $ come per esempio potete vedere in questo pesso di codice:

<script type="text/javascript">
JQ(document).ready(function(){
JQ("#test_jquery").html("this is jQuery!");
$("test_prototype").innerHTML="this is Prototype!";
});
</script>

e come normalmente avviene, avrete risolto il conflitto e le due librerie potranno coesistere.

ArticoliTi è piaciuto l'articolo? Condividilo sui vari Social Network o via e-mail
Rimani sempre aggiornato abbonandoti ai miei feed RSS o iscrivendoti alla newsletter.

  • Share/Bookmark

Forse collegati:

{ 10 trackback }

davidonzo's blog :)
31 gennaio 2007 alle 09:50
davidonzo's blog :)
15 febbraio 2007 alle 13:19
Lorenzone92’s Blog » Blog Archive » Share this per tutti!
29 agosto 2007 alle 15:35
Lorenzone92's Blog » Share this per tutti!
18 settembre 2007 alle 17:02
FX53.it » Wordpress il nuovo plugin per i social bookmark networks share-this 2.2 FX53.IT in italiano
6 febbraio 2008 alle 14:28
Matteo Gallinucci » Blog Archive » Conflicts using JQuery, Prototype and Mootools together
16 febbraio 2008 alle 19:50
Share This per tutti! | Lorenzo Raffio
10 aprile 2008 alle 13:32
Share This per tutti! | Lorenzo Raffio | Blog
13 febbraio 2009 alle 00:59
JQuery e Prototype | gregoriopalama.com
8 aprile 2009 alle 23:27
Foto rotanti per portfolio - Mr. Webmaster Forum
5 agosto 2009 alle 23:27

{ 28 commenti… Leggili qui sotto o aggiungine uno }

1 Nicola 12 ottobre 2009 alle 18:07

Grazie Davide, questo post ed il commento di Antonello mi hanno risparmiato tantissimo tempo ed un bel po’ di sbattimenti :)

Replica

2 daniele 28 marzo 2009 alle 18:08

ciao e grazie del vostro tempo,
non riesco a capire come intervenire. Io ho quanto segue, dove dovrei sostituire le variabili? Scusate la mia ignoranza,,, ma siamo qui per apprendere no? :-) grazie ancora.

Replica

3 Antonello 31 gennaio 2009 alle 18:09

Ho trovato una versione di Lightbox che usa jQuery
La si trova spulciando wordpress: http://wordpress.org/extend/plugins/jquery-lightbox-balupton-edition/other_notes/
Direi che è la soluzione più comoda.

Replica

4 enea 22 gennaio 2009 alle 20:15

grazie mille ZIO
era tutta la sera che non capivo :)
articolo utile!

Replica

5 MakhBeth 6 novembre 2008 alle 16:11

Grazie, un ottimo articolo. L’ho utilizzato per un altro conflitto, per un accordion (che pure inflazionava il dollaro :D) e funziona comunque.
Almeno mi sono potuto evitare lo sbatti di utilizzare jQuery.noConflict(). Grazie ancora ^^

Replica

6 Davide Salerno 11 settembre 2008 alle 08:42

@lulugix

Le ultime versioni di Share-This sono cambiate molto rispetto a quelle di cui si parla nell’articolo sia come funzionamento che come librerie javascript utilizzate.

In ogni caso nell’header del tuo blog non ho visto Jquery quindi se avevi problemi con Share-This ed il popoup il tutto era dovuto semplicemente al tema (CSS e HTML). Prova infatti ad attivare il tema di default e a mettere Share-This e a vedere se ci sono problemi o meno.

Replica

7 lulugix 5 settembre 2008 alle 19:11

Scusate ho visto che i tag head con i relativi apici di apertura e chiusura non vengono visualizzati qua nei commenti. Con riferimento al mio post precedente intendevo dire “i tag head sono presenti solo nell’header del mio template”.
Ciao e grazie.

Replica

8 lulugix 5 settembre 2008 alle 19:07

Salve a tutti, ho da poco più di un mese un blog sul quale avevo installato ShareThis in inglese. Ho deciso giusto qualche giorno fa di provare questo modificato in italiano, ho avuto problemi con il popup, ho cercato di inserire il codice per la correzione ma continua a non funzionare. Forse perché non ho capito bene dove incollarlo? Parlate di tag e gli unici che ho trovato sono quelli della header del mio template.
L’ho quindi incollato là ma non va.
Gentilmente potreste darmi una mano? Grazie in anticipo per l’aiuto.
P.S. Utilizzo Wordpress 2.5.1

Replica

Lascia un commento

Puoi usare queste tag e questi attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Articolo precedente:

Articolo successivo: