SP2013 SharePoint托管的应用程序模态对话框错误:无法读取'hiddenButtonValueBeforeDialog'

xol*_*ion 4 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>
Run Code Online (Sandbox Code Playgroud)

使用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;
}
Run Code Online (Sandbox Code Playgroud)

Vad*_*hev 10

该错误Cannot read property 'hiddenButtonValueBeforeDialog' of undefined,因为sp.ui.dialog.js是全球化的JavaScript库和所需的资源文件时SP.Res.resx尚未加载在客户端(SP.Res.hiddenButtonValueBeforeDialog从该文件生成).

  1. ScriptResx HTTP Handler用于在客户端加载资源文件的内容,必须添加以下行:

    <script type="text/javascript" src="/_layouts/15/ScriptResx.ashx?name=sp.res&culture=en-us"></script>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 此外,由于库中的SP.UI.UIUtility 命名空间存在依赖关系sp.ui.dialog.js,因此sp.init.js必须引用JavaScript库:

    <script type="text/javascript" src="/_layouts/15/sp.init.js"></script>
    
    Run Code Online (Sandbox Code Playgroud)