jsom javascript sharepoint-2013

javascript - sharepoint jsom



SharePoint 2013 agregar javascript después de cargar la página entera (5)

Descargo de responsabilidad: no tengo experiencia con SharePoint2013.

Tengo un problema: debo incluir / disparar algunas funciones de javascript después de que se haya cargado toda la página. Intenté escuchar los eventos DOMDocumentReady y window.load, pero sharepoint renderiza el resto de la página después de esos eventos.

Mi pregunta es: qué debo hacer para poder ejecutar el script después de que se haya procesado toda la página con ajax. También noté que la navegación de la página se basa en la parte de hash (#). Obviamente también debo detectar ese momento.

Cualquier ayuda o incluso un enlace a la página correcta en la documentación sería genial!


Este es un buen artículo sobre cómo usar la funcionalidad integrada de SharePoint SOD (Script On Demand): http://www.ilovesharepoint.com/search/label/SOD

Funciona bien tanto para SP 2010 como para 2013.

La idea de la carga de script a pedido tiene mucho sentido. SharePoint 2010 carga muchos JavaScripts, ¡esto lleva tiempo! Entonces, la idea es: primero cargue el HTML y deje que se muestre en el navegador para que el usuario pueda leer la información solicitada lo más rápido posible. Y en el segundo paso carga el comportamiento (los JavaScripts).


Existen diferentes técnicas utilizadas para proporcionar nuestro código JavaScript personalizado cargado antes / en el medio / después de los eventos OnLoad en SharePoint:

ExecuteOrDelayUntilBodyLoaded. Sys.Application.pageLoad. document.ready Jquery. _spBodyOnLoadFunctionNames. _spBodyOnLoadFunction. ExecuteOrDelayUntilScriptLoaded:sp.core.js. SP.SOD.executeFunc: sp.js. Sys.WebForms.PageRequestManager.PageLoaded

- La función ExecuteOrDelayUntilBodyLoaded siempre se ejecuta la primera (pero en esta etapa no podemos acceder a los métodos SP). Esto podría ser útil para ejecutar nuestro código personalizado en una etapa realmente anterior en el proceso de OnLoad.

- Hay dos funciones de SharePoint onLoad _spBodyOnLoadFunctionNames y _spBodyOnLoadFunction. Siempre ejecutado en la orden. Entonces, si queremos ejecutar algún código después de todas las funciones incluidas por nosotros (u otros desarrolladores) en _spBodyOnLoadFunctionNames, entonces es útil utilizar este _spBodyOnLoadFunction, porque se ejecuta el último.

- ExecuteOrDelayUntilScriptLoaded: sp.core.js y SP.SOD.executeFunc: sp.js. Están cambiando el orden de ejecución de una manera aleatoria.

- Si queremos ejecutar algunas funciones después de todas las funciones (SP, después de las funciones de carga, Yammer, etc.) podemos usar esta función para adjuntar el evento OnLoad -> Sys.WebForms.PageRequestManager.PageLoaded.

Puede ver el artículo completo que explica cada tipo, ventajas y desventajas aquí: https://blog.josequinto.com/2015/06/16/custom-javascript-function-loaded-after-the-ui-has-loaded-in-sharepoint-2013/

¡Saludos!


Tienes razón, MUCHAS cosas suceden en la página después de $ (document) .ready (). 2013 ofrece algunas opciones.

1) Script on Demand: (cargue un archivo js y luego ejecute mi código).

function stuffThatRequiresSP_JS(){ //your code }

SP.SOD.executeFunc("sp.js")

2) Demora hasta que se cargue (espere un archivo js, ​​luego ejecútelo)

function stuffToRunAfterSP_JS(){ //your code } ExecuteOrDelayUntilScriptLoaded(stuffToRunAfterSP_JS, "sp.js")

3) cargar despues de otras cosas

function runAfterEverythingElse(){ // your code } _spBodyOnLoadFunctionNames.push("runAfterEverythingElse");

Fuentes:

executeFunc: http://msdn.microsoft.com/en-us/library/ff409592(v=office.14).aspx

ExecuteOrDelayUntilScriptLoaded: http://msdn.microsoft.com/en-us/library/ff411788(v=office.14).aspx

No puedo encontrar una fuente en _spBodyOnLoadFunctionNames pero lo estoy usando en algunos lugares.

buena suerte.


Una función de registro de eventos documentada que es aproximadamente equivalente a _spBodyOnLoadFunctionNames es SP.SOD.executeOrDelayUntilEventNotified . Llame a esto para recibir una notificación del evento "sp.bodyloaded":

SP.SOD.executeOrDelayUntilEventNotified(function () { // executed when SP load completes }, "sp.bodyloaded");

Este controlador realmente se dispara ligeramente antes de las funciones _spBodyOnLoadFunctionNames .

Esta referencia es para SharePoint 2010, pero la utilidad SOD está presente en SharePoint 2013: http://msdn.microsoft.com/en-us/library/office/ff410354(v=office.14).aspx


https://mhusseini.wordpress.com/2012/05/18/handle-clicks-on-calendar-items-in-sharepoint-2010-with-javascript/

El enlace de arriba funcionó para mí. Básicamente, utiliza ExecuteOrDelayUntilScriptLoaded para iniciar su código de enganche de calendario después de que se cargue SP.UI.ApplicationPages.Calendar.js.

Luego, en el enlace del calendario, adjunta su propia función a la función: SP.UI.ApplicationPages.CalendarStateHandler.prototype.onItemsSucceed.

_spBodyOnLoadFunctionNames.push("LaunchColorCodeCalendarScriptOnReady"); function LaunchColorCodeCalendarScriptOnReady() { ExecuteOrDelayUntilScriptLoaded( MyCalendarHook, "SP.UI.ApplicationPages.Calendar.js"); } function MyCalendarHook() { var _patchCalendar = function () { //Do something to the items in the calendar here //ColorCodeCalendar(); }; var _onItemsSucceed = SP.UI.ApplicationPages.CalendarStateHandler.prototype.onItemsSucceed; SP.UI.ApplicationPages.CalendarStateHandler.prototype.onItemsSucceed = function ($p0, $p1) { _onItemsSucceed.call(this, $p0, $p1); _patchCalendar(); }; }