我的Sharepoint应用中有这个代码:
function upsertPostTravelListItemTravelerInfo1() {
var clientContext = SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('PostTravelFormFields');
this.website = clientContext.get_web();
currentUser = website.get_currentUser();
var commonEffluvia = 'i:0#.f|smp|';
if (currentUser.indexOf(commonEffluvia) > -1) {
currentUser = currentUser.substr(commonEffluvia.length, currentUser.length - commonEffluvia.length);
}
. . .
currentUser的减少是必要的,因为由于某种原因,它经常返回'i:0#.f | smp |' +用户的电子邮件地址,例如''i:0#.f | smp | clayshan@ucsc.edu',而不仅仅是'clayshan@ucsc.edu'
这个代码在jsfiddle中只是花花公子,在我的小提琴here中可以证明,但是在上面的代码中,在Chrome中运行,我看到,' Uncaught TypeError:currentUser.indexOf不是函数
为什么jsfiddle识别的Javascript方法无法被Chrome或Sharepoint(或“问题所在”)识别?
答案 0 :(得分:1)
简短的回答是currentUser
将是SPUser类型的对象,而不是字符串。
通过拨打clientContext.load(currentUser)
然后拨打clientContext.executeQueryAsync()
来调整该变量后,您就可以访问其成员方法,例如{{1} }和currentUser.get_loginName()
(这些似乎都没有在Microsoft的JavaScript类库文档中完整记录),这将允许您直接访问特定的用户属性...这应该比尝试解析更容易那个废话。