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)看看能不能用?有时它会保留一些缓存。
谢谢
我使用以下代码在使用内容编辑器 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)看看能不能用?有时它会保留一些缓存。
谢谢