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