#sharepoint #sharepoint-2013
#sharepoint #sharepoint-2013
Вопрос:
Я просто пытаюсь доказать концепцию отображения модального диалога на странице моего приложения, размещенного на SharePoint. Я полагаю, что включил необходимые библиотеки js, и я даю ему более чем достаточно времени для загрузки библиотек перед выполнением моей функции. Ошибка, которую я получаю,:
Не удается прочитать свойство ‘hiddenButtonValueBeforeDialog’ неопределенного
Я считаю, что у меня есть библиотеки, которые мне нужны::
<script type="text/javascript" src="/_layouts/15/init.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.js"></script>
<script type="text/javascript" src="/_layouts/15/SP.UserProfiles.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.core.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.ui.dialog.js"></script>
Javascript:
function showDialog() {
var optDict = {
width: 800,
height: 500,
url: 'http://www.google.com',
title: "Upload your file"
};
try {
SP.UI.ModalDialog.showModalDialog(optDict);
}
catch (err) {
alert(err.message);
}
return false;
}
Ответ №1:
Ошибка Cannot read property 'hiddenButtonValueBeforeDialog' of undefined
возникает, поскольку sp.ui.dialog.js является глобализированной библиотекой JavaScript, и требуемый файл ресурсов SP.Res.resx
не был загружен на стороне клиента ( SP.Res.hiddenButtonValueBeforeDialog
генерируется из этого файла).
Решение
ScriptResx
HTTP-обработчик используется для загрузки содержимого файлов ресурсов на стороне клиента, необходимо добавить следующую строку:<script type="text/javascript" src="/_layouts/15/ScriptResx.ashx?name=sp.resamp;culture=en-us"></script>
- Кроме того, поскольку существует зависимость для
SP.UI.UIUtility
пространство имен вsp.ui.dialog.js
sp.init.js
библиотеке должно ссылаться на библиотеку JavaScript:<script type="text/javascript" src="/_layouts/15/sp.init.js"></script>
Комментарии:
1. Это было то, что мне было нужно. Таким образом, это ограничение требует большего количества частей / частей для HTML-страницы, которые обычно уже есть для ASPX-страницы.
2. Я сделал это, но получаю сообщение об ошибке ‘Объект не поддерживает свойство или метод «_dlgWndTop».’ … я пропустил еще одну ссылку?
3. Хорошо, мне все еще не хватало некоторых ссылок… теперь я не получаю никаких ошибок… но диалоговое окно по-прежнему не отображается … 😉
4. Вместо доступа к ScriptResx.ashx я ссылался SP.Res.js напрямую <тип сценария=»текст /javascript» src=»/_layouts/15/SP.Res.js «></script> который сработал для меня. Я не уверен, есть ли какие-либо плюсы и минусы в том, чтобы делать это таким образом.
Ответ №2:
Я добавил все эти ссылки в PlaceHolderMain
<script src="/_layouts/15/1033/init.js" type="text/javascript"></script>
<script src="/_layouts/15/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/_layouts/15/ie55up.js" type="text/javascript"></script>
<script src="/_layouts/15/sp.core.js" type="text/javascript"></script>
<script type="text/javascript" src="/_layouts/15/ScriptResx.ashx?name=sp.resamp;culture=en-us"></script>
<script type="text/javascript" src="/_layouts/15/sp.init.js"></script>
<script src="/_layouts/15/sp.ui.dialog.js" type="text/javascript"></script>
<script src="/_layouts/15/core.js" type="text/javascript"></script>
<script src="/_layouts/15/sp.runtime.js" type="text/javascript"></script>
<script src="/_layouts/15/sp.js" type="text/javascript"></script>
<script src="/_layouts/15/inplview.js" type="text/javascript"></script>
<script src="/_layouts/15/cui.js" type="text/javascript"></script>
<script src="/_layouts/15/sp.ribbon.js" type="text/javascript"></script>
<script src="/_layouts/15/mdn.js" type="text/javascript"></script>
<script src="/_layouts/15/sp.ui.pub.ribbon.js" type="text/javascript"></script>
<script src="/_layouts/15/msstring.js" type="text/javascript"></script>
<script src="/_layouts/15/socialdata.js" type="text/javascript"></script>
<script src="/_layouts/15/sp.ui.socialribbon.js" type="text/javascript"></script>
<script src="/_layouts/15/cui.js" type="text/javascript"></script>
<script src="/_layouts/15/wpadder.js" type="text/javascript"></script>
<script src="/_layouts/15/search.js" type="text/javascript"></script>
Теперь все ошибки javascript исчезли