我需要获取currentUser信息,例如在页面上的特定区域(如页脚区域)加载Home.aspx页面时的电子邮件地址和/或名称。我有搜索,我发现的每个JavaScript都不起作用。 我需要在脚本编辑器或内容编辑器或XML文件中显示文本。
我发现以下JavaScript有什么问题。我在WebApp脚本编辑器中有它:
<script type=”text/javascript”>
ExecuteOrDelayUntilScriptLoaded(init,”sp.js”);
var currentUser;
function init(){
this.clientContext = new SP.ClientContext.get_current();
this.oWeb = clientContext.get_web();
currentUser = this.oWeb.get_currentUser();
this.clientContext.load(currentUser);
this.clientContext.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceeded), Function.createDelegate(this,this.onQueryFailed));
}
function onQuerySucceeded() {
document.getElementById(“logUser”).innerHTML = currentUser.get_loginName();
}
function onQueryFailed(sender, args) {
alert(‘Request failed. \nError: ‘ + args.get_message() + ‘\nStackTrace: ‘ + args.get_stackTrace());
}
< /script>
< div>Current Logged User:<label id=”logUser”></label></div>
任何人都可以帮助我吗?
答案 0 :(得分:0)
由于SP.SOD.executeOrDelayUntilScriptLoaded method期望首先加载SharePoint客户端库init
,因此很可能不执行sp.js
方法。
请改用SP.SOD.executeFunc method,因为它支持 on demand 脚本。
SP.SOD.executeFunc('sp.js', 'SP.ClientContext',function(){
var context = new SP.ClientContext.get_current();
var web = context.get_web();
var currentUser = web.get_currentUser();
context.load(currentUser);
context.executeQueryAsync(
function(){
console.log(currentUser.get_loginName());
},
function(sender, args){
console.log('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace());
});
});