EXEGUTEOROMSELAYUNTILSCRITLOADLOADLOGGIATO CON SP.JS Quando è previsto l'oggetto della modalità di debug
-
10-12-2019 - |
Domanda
Attualmente ho un file JavaScript che viene caricato nelle mie pagine di SharePoint.
jQuery(document).ready(function() {
ExecuteOrDelayUntilScriptLoaded(myfunction(), "sp.js");
});
myfunction = function(){
/*Do something here.*/
};
.
Ora il JavaScript funziona bene, tuttavia su una pagina di elenco, impedisce il caricamento del nastro della scheda Elenco. Nella console ottengo sotto errore.
.Script5007: oggetto previsto init.debug.js, linea 5153 carattere 5 ERRORE.
Anche se commendo tutta la funzione, quindi sembra esattamente come sopra ho ancora il messaggio di errore.
Ho notato che se cambio "sp.js" su "sp.debug.js" non ottengo il messaggio di errore. Dalla guardare gli script che vengono caricati sulla pagina, questo ha senso come sp.debug.js è caricato e non sp.js. Non voglio davvero mettere sp.debug.js nel codice JavaScript come quando raggiunge i server di produzione, non userà sp.debug.js. Non ho mai notato che questo accade prima con qualsiasi codice che ha eseguito ExecuteOrDelayAyuntilScriptLoad (JSFunction (), "sp.JS"). C'è un modo per farlo funzionare per entrambi gli ambienti come con una dichiarazione #ifdebug in JavaScript? O qualche altra idea.
Soluzione
stai usando executeordERelayAyuntilscriptLoaded sbagliato, dovresti usareIl nome della funzione, non eseguirlo.
In questo modo:
jQuery(document).ready(function() {
ExecuteOrDelayUntilScriptLoaded(myfunction, "sp.js");
});
.
Nota che ho rimosso il "()" da MyFunction.Ora dovrebbe funzionare come previsto
Altri suggerimenti
Non utilizzare JQuery per tali scopi, utilizzare invece delle funzionalità incorporate di SharePoint:
var myFunction = function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
}
_spBodyOnLoadFunctionNames.push("myFunction");
.
o una funzione anonima
_spBodyOnLoadFunctionNames.push(function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
});
.