SharePoint 2010中的Javascript window.onload问题

时间:2012-03-21 16:10:51

标签: javascript sharepoint-2010

当用户首次打开SharePoint网站时,我将弹出“使用期限”模式对话框。我正在使用SP.UI.ModalDialog.showModalDialog()函数。它是在SharePoint 内容编辑器 Web部件中创建的。

首次打开页面时,“模态”对话框正常工作。但是,如果我再次打开页面,它将无效。任何人都可以帮我解决这个问题吗?这似乎是一个缓存问题?

这是我的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 个答案:

答案 0 :(得分:4)

使用:

而不是window.onload = codeAddress

_spBodyOnLoadFunctionNames.push("codeAddress");

并且SharePoint将在窗口加载时调用您的函数。 _spBodyOnLoadFunctionNames本身就是一个SharePoint对象。

我遇到了这个问题,遇到了this link,这解释了原因;

  

在开发使用JavaScript的Web部件或其他控件时,需要在Web页面的Body OnLoad事件上调用某些函数是很常见的。这样做的问题是,在SharePoint中,Body元素位于母版页中,而不在控件中,因此这样做可能会非常棘手。

     

幸运的是,SharePoint团队使用名为 _spBodyOnLoadFunctionNames 的特殊数组为开发人员提供了一种方便的方法。你唯一要做的就是将你的函数名称推送到这个数组,它将在窗口的OnLoad事件中被调用。