【问题标题】:SharePoint 2013 App: 'Object' not defined (IFrame / IE9)SharePoint 2013 应用程序:未定义“对象”(IFrame / IE9)
【发布时间】:2013-03-16 19:40:57
【问题描述】:

在为 SharePoint 2013 开发(SharePoint 托管)应用程序部件时,我不断收到错误消息“未定义对象”。在其他情况下(取决于我正在加载的外部 .js 文件),我可能会收到“功能”未定义错误。更具体地说:当我将应用程序部件添加到(wiki)页面时,我只会收到此错误。该页面在 IE9 中以标准模式加载(但错误也发生在 Compat View 中)。

我在 Microsoft 找到了以下信息:如果从 DOM 树中删除 iFrame,则 API 不可用 => http://msdn.microsoft.com/en-us/library/gg622929(v=VS.85).aspx?ppud=4

我已经在我尝试加载的 HTML 页面的头部添加了一个简单的警报作为应用程序部件的源(实际上是一个简单的 IFrame 对象),并且确实在添加时页面被加载了多次应用程序部分。添加应用程序部件后,警报只会触发一次,我不会遇到任何“对象”未定义的错误。所以我怀疑我的 App Part 是先创建然后多次操作(从 DOM 附加和分离)。

似乎我的 App Part,因为它暂时从 DOM 中删除,所以删除了 JavaScript API!如果是这样的话,那么我该如何开发依赖 JavaScript 的 App Parts(他们不应该首先不依赖 JavaScript 吗?!)...

【问题讨论】:

    标签: javascript iframe internet-explorer-9 sharepoint-2013


    【解决方案1】:

    如果我重新加载页面直到 JavaScript API 再次可用,我可以“抑制”这种行为(这似乎是在最后一次分离和附加 IFrame 之后)。因此,我只是将以下脚本作为页面头部的第一条语句:

    <script type="text/javascript">
        // Work-around for IE9 (http://msdn.microsoft.com/en-us/library/gg622929(v=VS.85).aspx?ppud=4)
        if (typeof Object == 'undefined' || typeof Function == 'undefined') {
            window.location.reload();
        }
    </script>
    

    不过,这种“先发制人”的垃圾收集对我来说似乎是一个错误而不是一个功能!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多