Objeto # no tiene método 'ShowModalDialog'
-
10-12-2019 - |
Pregunta
Considere el siguiente código:
var options = {
title: 'Create a new Post'
autoSize: true,
url: url
}
SP.UI.ModalDialog.showModalDialog(options);
El código se ejecuta desde una acción personalizada del BCE y desde una parte web.Funciona bien en IE, sin embargo, cuando lo llamo desde la página web en Google Chrome, da el siguiente error:
TypeError no capturado: objeto # no tiene método 'ShowModalDialog'
Lo extraño es que cuando llamo al mismo código exacto (es parte de mi biblioteca) de la acción personalizada del BCE, ¡ahora funciona en Google Chrome!
He intentado llamarlo con
ExecuteOrDelayUntilScriptLoaded
_spBodyOnLoadFunctionNames.push("funcname")
LoadSodByKey("sp.ui.dialog.js", null);
¿Alguna idea o ayuda?¡Me está volviendo loco!
Solución
Este es un problema de cromo con su modelo de almacenamiento en caché.
Por favor, asegúrese de llamar
LoadSodByKey("SP.UI.Dialog.js", null);
para asegurarse de que el archivo esté cargado.
Otros consejos
Este error especificado que se encuentra en el navegador de Chrome, podría eliminarse usando sp.sod.execute (clave, nombre de función, args) MÉTODO .
Reemplazar la línea
SP.UI.ModalDialog.showModalDialog(options);
con el
SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);