为什么我的.ascx文件(Sharepoint 2010)中无法识别indexOf?

时间:2015-10-20 16:03:48

标签: javascript sharepoint-2010 google-chrome-devtools indexof

我的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(或“问题所在”)识别?

1 个答案:

答案 0 :(得分:1)

简短的回答是currentUser将是SPUser类型的对象,而不是字符串。

通过拨打clientContext.load(currentUser)然后拨打clientContext.executeQueryAsync()来调整该变量后,您就可以访问其成员方法,例如{{1} }和currentUser.get_loginName()(这些似乎都没有在Microsoft的JavaScript类库文档中完整记录),这将允许您直接访问特定的用户属性...这应该比尝试解析更容易那个废话。