Back to top

Autore Topic: [RISOLTO] Jquery vs the world !!!  (Letto 1473 volte)

Offline simpatica1987

  • Nuovo arrivato
  • *
  • Post: 19
  • Sesso: Femmina
    • Mostra profilo
[RISOLTO] Jquery vs the world !!!
« il: 21 Giu 2012, 00:39:07 »
Ciao a tutti,

ho un piccolo problemi che mi sta facendo diventare matta, su un sito con joomla 2.5 ho installato un plugin (glossary) ovvero un "glossario" che in pratica permette di aprire una finestrella atuonoma con la spiegazione del termine su cui si passa col mouse (mouseover) Tale plugin  per funzionare necessita dell'installazione di un'altro plugin chiamato  Core Design Scriptegrator.

Questa è la descrizione di   Core Design Scriptegrator:
"Core Design Scriptegrator plugin for Joomla! 2.5
Plugin contains some helpful JavaScript libraries (jQuery, jQuery UI, Highslide etc.). It's a necessary plugin for a most of Core Design extensions."

in pratica contiene delle librerie, tra cui la Jquery, ora il problema è che su questo sito utilizzo un template a pagamento che contiene alcune features che utlizzano anch'esse Jquery e infatti installando tale template, viene installato un plugin chiamato "jblibrary"  (joomla bamboo library) che contiene anch'esso, tra lea ltre cose, la libreria Jquery.

Questa è la descrizione di tale plugin:

"JB Library is a plugin used for Joomlabamboo templates and extensions. The plugin controls the loading of javascript libraries and also handles image processing for our gallery and content extensions."


Il mio problema è lo stesso che ho letto avere in moltissimi qui sul forum ovvero quello di incompatibilità tra diverse istanze di Jquery, solo che il mio problema si presenta in maniera un po' più stravagante rispetto agli altri post letti nei vari thread.

In pratica se disattivo il plugin library del template o addiritura lo disinstallo, il plugin glossary non funziona comunque,a questo punto mi viene da pensare che qualche altra "cosa" stia chiamando delle istanze di jquery, ma attualmente non ho installato nulla che potrebbe richiamarle.

Ho provato ad abilitare la funzione jQuery No-Conflict e non mi ha portato a nulla, ho provato con mootools e non mi ha portato a niente, ho provato anche la feature cleaner istances (attualmente in beta version):

"Prevents loading of multiple instances of the same JavaScript library (for example jQuery)."Cleaners" are enabled only if required by other Core Design extensions, not all the time.Please note this function is experimental and we can not guarantee the compatibility with other Joomla! templates or extensions."

ma niente, infine ho provato a fare caricare la jquery sia in locale, che in remoto da google api, cambianto anche versioni andando all'indietro fino alla vecchissima versione 1.2.6 ma di nuovo niente.

Ora premettendo che non vorrei rinunciare alle features del template che richiedono Jquery e nello stesso tempo vorrei poter utilizzare anche il plugin glossario (che è l'unico che funzioni davvero su j2.5) a questo punto chiedo aiuto a voi, sperando che qualcuno sia in grado di risolvere questo problema, o indicarmi la strada giusta per poterlo risolvere, in aggiunta a tutto questo ne approfitto anche per domandare se esiste un qualche modo per vedere quale istanze di jquery il sito carica cosi da poter andare ad analizzare eventuali altre istanze richiamate al di fuori del template e del glossary, ed eventualmente killarle.

Grazie a chiunque abbia avuto il tempo e la voglia di leggere questo lunghissimo post e magari provare a rispondere.
« Ultima modifica: 21 Giu 2012, 18:47:15 da simpatica1987 »
Ci vuole tanta pazienza....

Offline simpatica1987

  • Nuovo arrivato
  • *
  • Post: 19
  • Sesso: Femmina
    • Mostra profilo
Re:Jquery vs the world !!!
« Risposta #1 il: 21 Giu 2012, 18:46:59 »
Fortunatamente sono riuscita a risolvere il mio problema.

Ne condivido la soluzione sperando possa essere utile a qualcuno anche in futuro.

L'errore era insito nel file accordionMenu.js, piu esattamente all'ultima riga che riportava un'errata sintassi, o meglio, più che errata, tale sintassi non rispetta le nuove librerie jquery e per questo motivo causa un conflitto che impedisce agli script di funzionare, anche se tale conflitto non viene rilevato dall'apposita funziona "Jquery no conflit"

Mi è bastato commentare la seguente porzione di codice ora tutto funziona a dovere.

(function($){$.dimensions={version:'@VERSION'};$.each(['Height','Width'],function(i,name){$.fn['inner'+name]=function(){if(!this[0])return;var torl=name=='Height'?'Top':'Left',borr=name=='Height'?'Bottom':'Right';return num(this,name.toLowerCase())+num(this,'padding'+torl)+num(this,'padding'+borr)};$.fn['outer'+name]=function(options){if(!this[0])return;var torl=name=='Height'?'Top':'Left',borr=name=='Height'?'Bottom':'Right';options=$.extend({margin:false},options||{});return num(this,name.toLowerCase())+num(this,'border'+torl+'Width')+num(this,'border'+borr+'Width')+num(this,'padding'+torl)+num(this,'padding'+borr)+(options.margin?(num(this,'margin'+torl)+num(this,'margin'+borr)):0)}});$.each(['Left','Top'],function(i,name){$.fn['scroll'+name]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(name=='Left'?val:$(window)['scrollLeft'](),name=='Top'?val:$(window)['scrollTop']()):this['scroll'+name]=val}):this[0]==window||this[0]==document?self[(name=='Left'?'pageXOffset':'pageYOffset')]||$.boxModel&&document.documentElement['scroll'+name]||document.body['scroll'+name]:this[0]['scroll'+name]}});$.fn.extend({position:function(){var left=0,top=0,elem=this[0],offset,parentOffset,offsetParent,results;if(elem){offsetParent=this.offsetParent();offset=this.offset();parentOffset=offsetParent.offset();offset.top-=num(elem,'marginTop');offset.left-=num(elem,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left}}return results},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&$.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return $(offsetParent)}});function num(el,prop){return parseInt($.css(el.jquery?el[0]:el,prop))||0}})(jQuery);

Saluti,
Nicole
Ci vuole tanta pazienza....

 



Web Design Bolzano Kreatif