我只是想证明在我的 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;
}

最佳答案

出现Cannot read property 'hiddenButtonValueBeforeDialog' of undefined错误是因为sp.ui.dialog.js是全局化的JavaScript库,客户端还没有加载所需的资源文件SP.Res.resx(SP.Res.hiddenButtonValueBeforeDialog就是从这个文件生成的)。

解决方案

  • ScriptResx HTTP Handler 用于加载资源的内容
    客户端上的文件,必须添加以下行:
    <script type="text/javascript" src="/_layouts/15/ScriptResx.ashx?name=sp.res&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>
    
  • 关于sharepoint - SP2013 SharePoint 托管的应用程序模态对话框错误 : Cannot read 'hiddenButtonValueBeforeDialog' ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24457967/

    10-13 00:26