JQuery plugin non funzionano correttamente con ScriptManager di ASP.NET AJAX
-
18-09-2019 - |
Domanda
Sto cercando di utilizzare un plugin jQuery in un controllo. Le pagine che il controllo può essere sul postback parziali applicazioni mediante un UpdatePanel. Includo jQuery e il plugin durante l'evento PreRender del controllo in questo modo:
ScriptManager.RegisterClientScriptInclude(
this,
this.GetType(),
"jquery",
"/_infrastructure/javascript/jquery.js"));
ScriptManager.RegisterClientScriptInclude(
this,
this.GetType(),
"jquery.customPlugin",
"/_infrastructure/javascript/jquery.customPlugin.js");
Il plugin jQuery customPlugin imposta una nuova funzione chiamata "executeCustomPlugin". Più tardi, nel caso PreRender del controllo, io uso il plugin su un elemento sul controllo:
ScriptManager.RegisterStartupScript(
this,
this.GetType(),
"customPlugin init script",
@"$(document).ready(function() {
$('#elementId').executeCustomPlugin();
});",
true);
Tuttavia, quando si esegue, ottengo l'errore JavaScript:
$('#elementId').executeCustomPlugin is not a function
Sembrerebbe come se il plugin jQuery non viene mai eseguito a tutti, ma ho istituito window.alerts nel file jQuery.customPlugin.js, ed è davvero in esecuzione.
C'è un modo per risolvere questo problema?
Soluzione 2
Si scopre che il mio problema è stato causato da includendo jQuery due volte. La prima istanza di jQuery è stato sempre applicato il plugin, ma la seconda istanza jQuery stava ricevendo la chiamata.
Altri suggerimenti
Una possibile spiegazione è che il plugin non esiste nel DOM prima dell'esecuzione del codice ScriptManager.
Visualizza il sorgente della pagina dopo che è stato reso al browser e garantire che tag script del vostro plugin personalizzato è resa prima il javascript che è registrato con il tuo script manager.