Объект # не <Object>имеет метода 'showModalDialog'
-
10-12-2019 - |
Вопрос
Рассмотрим следующий код:
var options = {
title: 'Create a new Post'
autoSize: true,
url: url
}
SP.UI.ModalDialog.showModalDialog(options);
Код выполняется из пользовательского действия ECB и из веб-части.Он отлично работает в IE, однако, когда я вызываю его из веб-части в Google Chrome, он выдает следующую ошибку:
Неперехваченная ошибка типа:Объект # не имеет метода 'showModalDialog'
Самое странное, что когда я вызываю точно такой же код (это часть моей библиотеки) из пользовательского действия ECB, он теперь работает в Google Chrome!
Я пробовал вызвать его с помощью
ExecuteOrDelayUntilScriptLoaded
_spBodyOnLoadFunctionNames.push("funcname")
LoadSodByKey("sp.ui.dialog.js", null);
Есть какие-нибудь идеи или помощь?Это сводит меня с ума!
Решение
Это проблема Chrome с его моделью кэширования.
Пожалуйста, обязательно позвоните
LoadSodByKey("SP.UI.Dialog.js", null);
Чтобы убедиться, что файл загружен.
Другие советы
Эта указанная ошибка, возникающая в браузере Chrome, может быть устранена с помощью Метод SP.SOD.execute(ключ, имяфункции, аргументы).
Замените строку
SP.UI.ModalDialog.showModalDialog(options);
с
SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);