Tuesday, January 13, 2009

Implementare JQuery in DotNetNuke

. Tuesday, January 13, 2009

Qualche settimana fa ho iniziato ad utilizzare il Framework JQuery all'interno di un portale intranet che si basa su piattaforma DotNetNuke.
Per la verità la versione usata di DNN non è proprio recentissima, per la precisione la 4.5.3.0, che a differenza della 5.0 non presenta in modo nativo la possibilità di incapsulare nei moduli JQuery.
Per ovviare si possono sempre registrare i vari script facendo affidamento alla classe ClientScriptManager:

   1: Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JQuery", 
      "<script type=\"text/javascript\" src=\"JQuery/jquerymin.js\"></script>");

Purtroppo eseguendo la pagina vengono lanciati una serie di errori che in prima battuta possono risultare incomprensibili. Nello specifico con Internet Explorer viene mostrato il seguente messaggio:

Error: this.container.parentNode is null or not on object
La libreria va in conflitto con i nomi dei moduli DNN che usano il carattere $ usato anche dalla stessa libreria. Per risolvere questo problema è sufficiente utilizzare la funzione:

   1: jQuery.noConflict()

Per inettare lo script si può procedere come visto in precedenza:

   1: Page.ClientScript.RegisterStartupScript(this.GetType(), "noConflit",
   2:  "<script type=\"text/javascript\">jQuery.noConflict();</script>");

In questo modo possiamo sostituire lo shortcut $ con jQuery.
Esempio:

   1: function getTest()
   2: {
   3:   jQuery('#myButton').bind('click', function() {
   4:     alert('Test');
   5:   });
   6: }

0 commenti:

Post a Comment