Mostrando entradas con la etiqueta Script On Demand. Mostrar todas las entradas
Mostrando entradas con la etiqueta Script On Demand. Mostrar todas las entradas

domingo, 24 de agosto de 2014

Funciones SP.SOD.registerSod y SP.SOD.registerSodDep

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”

image

En una página agrego el webpart de Script Editor, y agrego el siguiente código:

image

<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>

image

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

image

image

Más información:

http://msdn.microsoft.com/en-us/library/ff408081.aspx