Sharepoint 2013 Sharepoint2013模态对话框未加载

Sharepoint 2013 Sharepoint2013模态对话框未加载,sharepoint-2013,Sharepoint 2013,嗨,我有一个简单的页面上传到SharePoint页面库,并试图模拟没有关闭等待对话框的长时间运行的操作。 下面是我的脚本 <script type="text/javascript"> var waitDialog = null; function DoWork() { toggleProcessingStatus(true); UpdateUI(); toggleProcessingStatus(false);

嗨,我有一个简单的页面上传到SharePoint页面库,并试图模拟没有关闭等待对话框的长时间运行的操作。 下面是我的脚本

<script type="text/javascript">
    var waitDialog = null;
    function DoWork() {
        toggleProcessingStatus(true);
        UpdateUI();
        toggleProcessingStatus(false);
    }
    function UpdateUI()
    {
        var lblControl = document.getElementById("lbl");
        for (i = 0; i < 20000; i++) 
        {            
            lblControl.innerText = lblControl.innerText + i;
        }
    }
    function toggleProcessingStatus(showStatus) {
        if (showStatus) {
            ExecuteOrDelayUntilScriptLoaded(ShowWaitDialog, "sp.js");
        }
        else {
            if (waitDialog != null) {
                //setTimeout(CloseWaitDialog, 5000);
                CloseWaitDialog();
            }
        }
    }
    function ShowWaitDialog() {
        waitDialog = SP.UI.ModalDialog.showWaitScreenWithNoClose('Updating...', 'Please wait while update completes...', 150, 330);
    }

    function CloseWaitDialog() {
        if (waitDialog != null) {
            waitDialog.close();
        }
    }
</script>
<input type="button" id="btnShowDialog" title="Do Long Running Work" name="Do Long Running Work" onclick="javascript: DoWork();" value="Do Long Running Work"/>
Label: <label id="lbl" title="Test">Test Wait Screen</label>

var waitDialog=null;
函数DoWork(){
切换ProcessingStatus(真);
UpdateUI();
切换处理状态(假);
}
函数UpdateUI()
{
var lblControl=document.getElementById(“lbl”);
对于(i=0;i<20000;i++)
{            
lblControl.innerText=lblControl.innerText+i;
}
}
功能切换ProcessingStatus(显示状态){
如果(显示状态){
ExecuteOrderLayUntilScriptLoaded(ShowWaitDialog,“sp.js”);
}
否则{
if(waitDialog!=null){
//设置超时(CloseWaitDialog,5000);
CloseWaitDialog();
}
}
}
函数ShowWaitDialog(){
waitDialog=SP.UI.ModalDialog.showWaitScreenWithNoClose('更新…','请稍候,更新完成…',150330);
}
函数CloseWaitDialog(){
if(waitDialog!=null){
waitDialog.close();
}
}
标签:测试等待屏幕
非常感谢您的帮助

谢谢,
Mallikarjun

试试ExecuteOrderLayUntillScriptLoaded(ShowWaitDialog,“sp.ui.js”)

必须加载“sp.ui.dialog.js”

我已经将下面的代码添加到我想要打开对话框的当前页面


与前面提到的其他答案一样,您需要确保已加载脚本sp.ui.dialog.js。您可以使用类似于下面的代码来实现这一点

SP.SOD.executeOrDelayUntilScriptLoaded(function () {
    SP.UI.ModalDialog.showModalDialog(options);
}, "sp.ui.dialog.js");
//ensure script is loaded
SP.SOD.executeFunc("sp.ui.dialog.js", null, null);
在该模式中同时包含
executeordelayuntilscript-loaded
executeFunc
,可确保:

  • ExecuteOrderLayUntilScriptLoaded-在执行封闭代码之前,请等待sp.ui.dialog加载完毕
  • executeFunc-如果页面尚未请求sp.ui.dialog,请确保该对话框已加载

尝试使用spBodyOnLoadFunctionNames.push('functionName')

就你而言

if(showStatus){
_spBodyOnLoadFunctionNames.push(ShowWaitDialog);
}