Objet # n'a pas de méthode 'showmodaldialog'
-
10-12-2019 - |
Question
Considérez le code suivant:
var options = {
title: 'Create a new Post'
autoSize: true,
url: url
}
SP.UI.ModalDialog.showModalDialog(options);
Le code est exécuté à partir d'une action personnalisée ECB et d'une partie Web.Cela fonctionne bien dans IE, cependant, lorsque je l'appelle à partir du WebPart dans Google Chrome, il donne l'erreur suivante:
non capturé TypeError: l'objet # n'a pas de méthode 'showmodaldialog'
La chose étrange est que lorsque j'appelle exactement le même code (cela fait partie de ma bibliothèque) à partir de l'action personnalisée de la BCE fonctionne maintenant dans Google Chrome!
J'ai essayé de l'appeler avec
ExecuteOrDelayUntilScriptLoaded
_spBodyOnLoadFunctionNames.push("funcname")
LoadSodByKey("sp.ui.dialog.js", null);
Des idées ou une aide?Ça me rend fou!
La solution
Ceci est un problème chrome avec son modèle de mise en cache.
S'il vous plaît assurez-vous d'appeler
LoadSodByKey("SP.UI.Dialog.js", null);
Pour vous assurer que le fichier est chargé.
Autres conseils
Cette erreur spécifiée rencontrée dans le navigateur Chrome, pourrait être éliminée en utilisant sp.sod.execute (clé, nom de fonctionnement, argument) .
Remplacez la ligne
SP.UI.ModalDialog.showModalDialog(options);
avec le
SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);