SharePoint Online 在页面上显示用户个人资料信息

SharePoint Online Display user profile information on a pag

我使用以下代码在使用内容编辑器 web 部件的页面上显示用户配置文件信息。当页面处于编辑模式时,这段代码会显示所有信息,一旦我发布页面,我就会变得一片空白。我不确定我做错了什么。

    <script type = "text/ecmascript">
    ExecuteOrDelayUntilScriptLoaded(getUserProfile, "sp.js");
    function getUserProfile() {
        var userID = _spPageContextInfo.userId;
        var clientContext = new SP.ClientContext.get_current();
        var web = clientContext.get_web();
        var userInfoList = web.get_siteUserInfoList();
        var camlQuery = new SP.CamlQuery();
        camlQuery.set_viewXml("<View><Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + userID + "</Value></Eq></Where></Query><RowLimit>1</RowLimit></View>");
        this.collListItem = userInfoList.getItems(camlQuery);
        clientContext.load(collListItem);
        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
    }
    function onQuerySucceeded(sender, args) {
        var item = collListItem.itemAt(0);
        var userName = item.get_fieldValues().UserName;
        var displayName = item.get_fieldValues().Title;
        var jobname = item.get_fieldValues().JobTitle;
        var depart = item.get_fieldValues().Department;
        var pic = "";
        var nam = "";
        var job = "";
        var dep = "";

        if (userName != null) {
            pic += "<img src='/_layouts/15/userphoto.aspx?size=L&username=" + userName + "'/>";
        }
        if (displayName != null) {
            nam += "<p><span>" + displayName + "</span></p>";
        }
        if (jobname != null) {
            job += "<p><span>" + jobname + "</span></p>";
        }
        if (depart != null) {
            dep += "<p><span>" + depart + "</span></p>";
        }
        var myimage = document.getElementById("myimage");
        myimage.innerHTML = pic;
        var myname = document.getElementById("myname");
        myname.innerHTML = nam;
        var myjob = document.getElementById("myjob");
        myjob.innerHTML = job;
        var mydep = document.getElementById("mydep");
        mydep.innerHTML = dep;
    } 
</script>
<div class="profile-bg">
<div class="profile-info">
    <div class="profile-image">
        <div id="myimage">
        </div>
    </div>
</div>
<div class="profile-info" style="margin-top: -10px;">
    <div class="profile-details">
        <h3><span id="myname"></span></h3>
        <span class="profile-title">
            <span id="myjob"></span>
        </span>
        <span id="mydep" style="font-size: 18px; color: #f9f9f9; font-weight: 400;"> </span>
    </div>
</div>

我在内容编辑器 Web 部件中尝试了您的代码。它在 display/edit 模式下都运行良好。 result

刷新页面(Ctrl+F5)看看能不能用?有时它会保留一些缓存。

谢谢