【问题标题】:SharePoint 2013 Calendar getSelector is undefined in IESharePoint 2013 日历 getSelector 在 IE 中未定义
【发布时间】:2015-03-05 19:54:09
【问题描述】:

我有一个带有日历 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 的值,但没有成功。

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

可能是什么问题?

【问题讨论】:

  • 你确定ctxid 包含正确的值吗?如果您将字符串硬编码到方法中,这是否有效?
  • 我尝试将值硬编码为“WPQ3”,但 IE 仍然返回“未定义”错误...

标签: javascript internet-explorer calendar sharepoint-2013


【解决方案1】:

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

所以在我修复了另一个问题后,问题似乎已经解决了: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 变量。

我可能应该在提问之前修正其他两个错误。对于那个很抱歉!

谢谢你的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2013-12-17
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    相关资源
    最近更新 更多