2014-12-03 54 views
3

您好我有一個簡單的頁面上傳到SharePoint頁面庫,並試圖模擬長時間運行的操作,沒有關閉等待對話框。 下面是我的腳本是什麼Sharepoint2013 Modal對話框未加載

<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> 

任何幫助,非常感謝。

感謝, Mallikarjun

回答

0

嘗試ExecuteOrDelayUntilScriptLoaded(ShowWaitDialog, 「sp.ui.js」);

0

必須加載「sp.ui.dialog.js」。

我已經在下面的代碼中添加了我想打開對話框的頁面。

0

像提到的其他答案,你需要確保腳本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); 

兩個executeOrDelayUntilScriptLoadedexecuteFunc在這個模式的加入保證了以下幾點:

  • executeOrDelayUntilScriptLoaded - 等到sp.ui.dialog之前加載執行封裝的代碼
  • executeFunc - 確保sp.ui.dialog已加載,如果它已經沒有被頁面請求