SP.SOD.registerSod nos permite registrar un archivo de javascript de forma sincrónica. También podría utilizarse $includeScript, este método es similar, pero carga el script de forma asincrónica, lo cual a veces puede ocasionar problemas, Ej: llamar a una función que aún no se cargó.
La misma se define de la siguiente manera: SP.SOD.registerSod(key, url);
Es importante que el parámetro url sea una url relativa. Se recomienda usar la variable global definida por Sharepoint: this.L_Menu_BaseUrl. La misma se define desde el lado del servidor con el siguiente método: SP.Web.get_serverRelativeUrl()
Primero subo la librería jquery y myscript.js a la librería “Site Assets”
En una página agrego el webpart de Script Editor, y agrego el siguiente código:
<script>
SP.SOD.registerSod('jquery-1.11.1.min.js', this.L_Menu_BaseUrl + "/SiteAssets/jquery-1.11.1.min.js");
SP.SOD.registerSod('myscript.js', this.L_Menu_BaseUrl + "/SiteAssets/myscript.js");
SP.SOD.registerSodDep('myscript.js', 'jquery-1.11.1.min.js');
SP.SOD.executeFunc("myscript.js", null, function() {
console.log("SP.SOD.executeFunc called");
Probando();
}); </script>
Cómo pueden ver hay dos funciones más utilizadas: SP.SOD.registerSodDep y SP.SOD.executeFunc. La primera permite registrar un archivo como una dependencia de otro archivo. En este caso lo que hice es que antes de registrar myscript.js, primero registro jquery-1.11.1.min.js, ya que myscript.js hace uso de funciones de jquery. La función SP.SOD.executeFunc(key, functionName, fn), permite asegurar que primero se carga el archivo definido con el parámetro key, antes de llamar a la función “fn”. Este métod ya lo había comentado en este post: http://todosharepoint.blogspot.com.ar/2014/07/funcion-spsodexecutefunc-en-sharepoint.html
Dentro de la función “fn”, llamo al método “Probando();”, el cual está definido dentro de myscripts.js.
El archivo myscript,js tiene el siguiente código
$( document ).ready(function() {
alert("Se cargo la página...Listo Jquery");
});
function Probando()
{
alert("Se Ejecutó Probando...");
}
Guardo la página y veo los resultados.
Primero me lanza el alert del método “Probando” y después el alert de $(document).ready
Más información:
No hay comentarios:
Publicar un comentario