SharePoint Hosted App에서 ShowModalDialog가 작동하지 않습니다
-
10-12-2019 - |
문제
여러 다른 토론에서 동일한 문제가 발생합니다.
크롬 :
Cannot read property 'defaultDialogWidth' of undefined
firefox : SP.Res is undefined
https://sharepoint.stackkexchange.com/posts/76044 http://social.msdn.microsoft.com/forums/sharepoint/en-us/ff1dc5ea-c045-48f6-b0cd-144d0ab7c1ce/spreshiddenbuttonvaluebeforedialog-null-oor-not- an-object? forum= sharepointdevelopmentprevious http://chuvash.eu/2012/02/13/scriptresx. -Ashx-in-SharePoint /
나는 온라인으로 게시 된 다양한 솔루션을 시도했지만 일하지 않는 것 같습니다. 누구든지 누구나 누락 된지 말해 줄 수 있습니까? (나는 마스터 페이지를 사용하지 않음)
다음 코드가 있습니다.
.
function showTimeSheetLinesDialog(guid) {
var options = {};
options.width = 500;
options.height = 640;
//options.url = getQueryStringParameter('SPAppWebUrl') + '/Pages/TimeSheetLineDetail.aspx?guid=' + guid + '&json=' + $("#" + guid).attr('data-lines');
options.title = 'Dialog title';
options.allowMaximize = false;
options.showClose = true;
//SP.UI.ModalDialog.showModalDialog(options);
ExecuteOrDelayUntilScriptLoaded(SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options), "SP.js")
//SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
// parent.SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
}
및 다음 스크립트가로드 된 것입니다.
. <head>
<base target="_parent" />
<title></title>
<script type="text/javascript" src="/_layouts/15/init.js"></script>
<script type="text/javascript" src="../Scripts/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="/_layouts/15/MicrosoftAjax.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.runtime.debug.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.debug.js"></script>
<script type="text/javascript" src="/_layouts/15/ps.debug.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.ui.dialog.js"></script>
<script type="text/javascript" src="../Scripts/moment.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.init.js"></script>
<script src="/_layouts/15/ScriptResx.ashx?culture=nb-no&name=SP.Res"></script>
<link href="../Content/bootstrap.min.css" rel="stylesheet">
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css" rel="stylesheet">
<script src="../Scripts/bootstrap.min.js"></script>
<script src="../Scripts/Warning.js"></script>
</head>
해결책
나는 결국 누락 된 종속성을 나 자신을 발견하고, 누군가가 동일한 문제로 실행되는 것을 incase,
<script type="text/javascript" src="/_layouts/15/ScriptResx.ashx?culture=en%2Dus&name=SP%2ERes"></script>
<script type="text/javascript">
'use strict';
// Set the style of the client web part page to be consistent with the host web.
(function () {
var hostUrl = '';
if (document.URL.indexOf('?') != -1) {
var params = document.URL.split('?')[1].split('&');
for (var i = 0; i < params.length; i++) {
var p = decodeURIComponent(params[i]);
if (/^SPHostUrl=/i.test(p)) {
hostUrl = p.split('=')[1];
document.write('<link rel="stylesheet" href="' + hostUrl + '/_layouts/15/defaultcss.ashx" />');
break;
}
}
}
if (hostUrl == '') {
document.write('<link rel="stylesheet" href="/_layouts/15/1033/styles/themable/corev15.css" />');
}
})();
.
다른 팁
이 링크를 확인 했습니까?
이 을 언급합니다.
앱을 호스팅하는 웹 페이지에는 다음이 있어야합니다.
<WebPartPages:AllowFraming ID="AllowFraming1" runat="server" />
_ribbon = new Object();
스크립트로드 된 후 sp.ui.dialog.js
를 추가하십시오.
예 :
<script type="text/javascript" src="/_layouts/15/sp.ui.dialog.js"></script>
<script type="text/javascript">
_ribbon = new Object();
</script>
.