0

在为 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 吗?!)...

4

1 回答 1

0

如果我重新加载页面直到 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>

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

于 2013-03-16T20:17:24.733 回答