Pregunta

Actualmente tengo un archivo JavaScript que se carga en Mis Páginas de SharePoint.

jQuery(document).ready(function() {
 ExecuteOrDelayUntilScriptLoaded(myfunction(), "sp.js");
});

myfunction = function(){
 /*Do something here.*/
};

Ahora, el JavaScript funciona bien, sin embargo, en una página de lista, evita que la cinta cargue la pestaña Lista. En la consola me sale por debajo del error.

Script5007: Objeto esperado init.debug.js, línea 5153 carácter 5 error.

Incluso si comento toda la función para que se vea exactamente como arriba, todavía recibo el mensaje de error.

Me he dado cuenta de que si cambio "SP.JS" a "SP.DEBUG.JS", no recibo el mensaje de error. Desde mirar los scripts que están cargados en la página, esto tiene sentido como SP.DEBUG.JS está cargado y no está SP.JS. Realmente no quiero poner sp.debug.js en el código de Javascript como cuando llega a los servidores de producción, no utilizarán SP.DEBUG.JS. Nunca he notado que esto suceda antes con cualquier código que tenga EjecuteDelayuntilScriptScripted (JSFunction (), "Sp.js"). ¿Hay alguna manera de hacer que funcione para ambos entornos como con una declaración #ifdebug en Javascript? O alguna otra idea.

¿Fue útil?

Solución

Está utilizando EXECUSTEORDELAYTETETETELScriptScriptAred Mal, debe usarEl nombre de la función, no la ejecuta.

Me gusta esto:

jQuery(document).ready(function() {
 ExecuteOrDelayUntilScriptLoaded(myfunction, "sp.js");
});

Tenga en cuenta que quité el "()" de MyFunction.Ahora debería funcionar como se esperaba

Otros consejos

No use jQuery para tales fines, use las funciones integradas de SharePoint en lugar de:

var myFunction = function(){
    ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
}
_spBodyOnLoadFunctionNames.push("myFunction");

o una función anónima

_spBodyOnLoadFunctionNames.push(function(){
    ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
});

Licenciado bajo: CC-BY-SA con atribución
scroll top