SharePoint 2013 Calendar getSelector 在 IE 中未定义

SharePoint 2013 Calendar getSelector is undefined in IE

本文关键字:IE 未定义 getSelector 2013 Calendar SharePoint      更新时间:2023-09-26

我有一个带有日历 Web 部件的 SharePoint 2013 发布网站。我希望日历是组日历,但 SharePoint 不保留日历的默认用户。所以我一直在使用一种方法在页面加载时填充日历。这里详细描述了它:http://blogs.technet.com/b/meamcs/archive/2013/04/10/sharepoint-group-calendar-adding-default-users.aspx。这适用于Chrome,Opera,Safari和FireFox,但不适用于IE(我已经使用IE的模拟器测试了5到11)

链接中描述的方法从日历 html 标记中获取上下文 ID,并使用 SharePoint 的 JavaScript 库从预定义的 XML 加载额外的用户。我从服务器上的文件加载了 XML。Web 部件的 HTML 如下所示:

<div id="ctl00_ctl43_g_cc24db55_d224_4ea9_b770_4c2edd2c083e_ctl01_ctl00_ctl00" class="ms-acal-rootdiv" ctxid="WPQ3">...</div>

ctxid 用于引用日历。但是,在IE中,ctxid属性不存在!因此,我使用前面的元素来获取ctxid:

<div class="ms-acal-error" id="WPQ3_err" style="display:none"></div>

这是我将用户加载到日历中的代码:

ExecuteOrDelayUntilScriptLoaded(function(){
    var ctxid; 
    if ( $(".ms-acal-rootdiv").attr("ctxid") ){
        ctxid = $(".ms-acal-rootdiv").attr("ctxid");                                    
    }
    else if ( $(".ms-acal-error").attr("id") ){
        ctxid = $(".ms-acal-error").attr("id").replace("_err","");
    }                                                                   
    SP.UI.ApplicationPages.CalendarSelector.instance().getSelector(1,ctxid).selectEntities(xml,true);
 },"sp.ribbon.js");

IE 抛出错误:"无法获取未定义或空引用的属性'selectEntities'",并且 IE 确实为 getSelector(1,ctxid) 返回未定义。我也尝试过对 ctxid 的值进行硬编码,但没有成功。

我已经在谷歌上寻找了几个小时,但没有找到任何解决方案。大多数描述此过程的博客都有其他用户询问此问题的评论,但没有人回答这些问题。

可能是什么问题?

不确定这是否构成"答案",我不确定这是否会帮助其他人,但问题似乎已解决!

因此,在我修复另一个问题后,问题似乎已经自行解决:IE也抛出了错误:

Sys.ArgumentException: Value does not fall within the expected range. Parameter name: serverRelativeUrl sp.runtime.js 

其他一切都继续在页面上工作,所以我最初继续专注于手头的问题。今天,我决定专注于 Sys.ArgumentException 错误:在我的代码中,某些子网站需要来自其父网站列表中的信息。为了获取网站集 URL,我使用了 SharePoint 的 L_MenuBase_Url 变量。但是,我发现抛出 Sys.ArgumentException 错误是因为L_MenuBase_Url变量(由 SharePoint 设置)为空 (")。

不知何故,这是由 SharePoint 执行此代码引起的:

angular.element("#home_content").scope()._init()

在范围完成加载之前(我认为)。当我正在努力修复上面的错误时,我没有看到此错误:

Object doesn't support property or method '_init'

所以我记录了输出

angular.element("#home_content").scope()

而且,果然,它返回了未定义。此错误未在任何其他浏览器中发生...无论如何,一旦我通过使用计时器并等待 scope() 不是未定义的来确保 scope() 被定义,在执行 _init() 之前一切正常(包括日历和 L_Menu_BaseUrl 变量)。

在提出问题之前,我可能应该修复其他两个错误。对不起!

感谢您的帮助