2012-03-21 76 views
2

我將在用戶第一次打開SharePoint網站時彈出「使用期限」模式對話框。我正在使用SP.UI.ModalDialog.showModalDialog()函數。它在SharePoint 內容編輯器 Web部件中創建。SharePoint 2010中的Javascript window.onload問題

當我第一次打開頁面時,模式對話框工作正常。但是,如果我再次打開該頁面,則不起作用。任何人都可以幫助我解決這個問題嗎?這似乎是一個緩存問題?

這裏是我的JavaScript:

<script type="text/javascript"> 
    function codeAddress() { 
     alert('ok'); 
     var options = { 

      url: 'http://www.google.com', 
      Title: "Survey", 

      height: 500 

     }; 
     SP.UI.ModalDialog.showModalDialog(options); 
    } 
    window.onload = codeAddress; 
</script> 
+1

你的JavaScript沒有什麼不妥 - 畢竟,你已經看到它的工作。您是否嘗試清除緩存以使其再次運行?您可能還想確保SharePoint沒有「幫助」修改您的代碼。 – 2012-03-21 16:15:19

回答

3

相反的window.onload = codeAddress,使用:

_spBodyOnLoadFunctionNames.push("codeAddress");

和SharePoint會打電話給你在窗口加載功能。 _spBodyOnLoadFunctionNames本身是一個SharePoint對象。

我有這個問題,並遇到了this link,這解釋了原因;

在開發使用JavaScript的Web部件或其他控件時,通常需要在網頁的Body OnLoad事件中調用某些功能。問題在於,在SharePoint中,Body元素位於母版頁中,而不在控件中,因此執行此操作可能會非常棘手。

幸運的是,SharePoint團隊爲開發人員提供了一種方便的方法,使用名爲_spBodyOnLoadFunctionNames的特殊數組。你唯一需要做的就是將你的函數名稱推送到這個數組中,並且它會在窗口的OnLoad事件中被調用。