SharePoint 2010 metteva a disposizione il metodo
ExecuteOrDelayUntilScriptLoaded per eseguire del codice
JavaScript solo dopo il caricamento di una specifica libreria, ad esempio:
ExecuteOrDelayUntilScriptLoaded(miaFunzione, "sp.js");
function miaFunzione() {
...
}
nel caso in cui doveva essere utilizzato con
JQuery andava incluso nel metodo
ready:
$(document).ready(function () {
ExecuteOrDelayUntilScriptLoaded(miaFunzione, "sp.js");
});
function miaFunzione() {
...
}
Tutto bene quindi?
Si ma solo
2010. Sulle versioni successive il metodo non è più disponibile ed è stato sostituito da
SP.SOD.executeFunc:
SP.SOD.executeFunc("sp.js", "SP.ClientContext", miaFunzione);
function miaFunzione() {
...
}
Quindi come fare per essere pronti a
migrare ad una versione successiva?
L'ideale è sostituire tutti i metodi
ExecuteOrDelayUntilScriptLoaded con una funzione equivalente che si adatti alla versione di
SharePoint prima della migrazione, in modo da avere il codice funzionante su
2010 e pronto a funzionare anche sulle versioni successive.
In questo caso ci viene in aiuto la proprietà
JavaScript _spPageContextInfo.webUIVersion presente sia su
2010,
2013 e
2016:
(document).ready(function () {
if(_spPageContextInfo.webUIVersion === 4) { // verifico la versione di SharePoint
// 4 = sono su SharePoint 2010
ExecuteOrDelayUntilScriptLoaded(miaFunzione, "sp.js");
} else {
// sono su versioni successive
SP.SOD.executeFunc("sp.js", "SP.ClientContext", miaFunzione);
}
});
Lo script parte da presupposto che si usi una versione 2010 o successiva, non prende in considerazione le versioni precedenti.