ExecutearDelayuntilscripted avec SP.JS lorsqu'il est en mode de débogage objet attendu

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/76370

  •  10-12-2019
  •  | 
  •  

Question

J'ai actuellement un fichier JavaScript qui est chargé dans mes pages SharePoint.

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

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

Maintenant, le JavaScript fonctionne simplement bien, cependant sur une page de liste, il empêche le ruban de charger l'onglet Liste. Dans la console, je reçois ci-dessous une erreur.

script5007: objet attendu init.debug.js, ligne 5153 caractère 5 erreur.

Même si je commencez toute la fonction de sorte que cela ressemble exactement au dessus, je reçois toujours le message d'erreur.

J'ai remarqué que si je change "sp.js" à "sp.debug.js", je n'ai pas reçu le message d'erreur. En regardant les scripts chargés sur la page, cela a du sens que SP.DEBUG.JS est chargé et non SP.J.S. Je ne veux pas vraiment mettre sp.debug.js dans le code JavaScript comme lorsqu'il atteint des serveurs de production, ils n'utiliseront pas sp.debug.js. Je n'ai jamais remarqué que cela s'est passé auparavant avec un code qui a exécutéardelayuntilscriptLoad (JSFunction (), "SP.JS"). Y a-t-il un moyen de le faire fonctionner pour les deux environnements comme avec une déclaration #Ifdebug en JavaScript? Ou une autre idée.

Était-ce utile?

La solution

Vous utilisez ExecuteDarLayuntilscripted Vous devez utiliserLe nom de la fonction, pas l'exécuter.

comme ceci:

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

Notez que j'ai supprimé le "()" de la mycée.Maintenant, il devrait fonctionner comme prévu

Autres conseils

N'utilisez pas de jQuery à des fins, utilisez des fonctionnalités embarquées SharePoint à la place:

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

ou une fonction anonyme

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top