Javascript SharePoint 2013应用程序:';对象';未定义(IFrame/IE9)

Javascript SharePoint 2013应用程序:';对象';未定义(IFrame/IE9),javascript,iframe,internet-explorer-9,sharepoint-2013,Javascript,Iframe,Internet Explorer 9,Sharepoint 2013,为SharePoint 2013开发(SharePoint托管)应用程序部件时,我不断收到错误消息“Object”未定义。在其他情况下(取决于我加载的外部.js文件),我可能会得到一个“函数”未定义错误。更具体地说:我只有在将应用程序部分添加到(wiki)页面时才会出现此错误。该页面以标准模式加载到IE9中(但错误也发生在Compat视图中) 我在Microsoft上发现以下信息:如果从DOM树中删除iFrame=> 我已经在HTML页面的头部添加了一个简单的警报,我正试图将其作为应用程序部分(

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

我在Microsoft上发现以下信息:如果从DOM树中删除iFrame=>

我已经在HTML页面的头部添加了一个简单的警报,我正试图将其作为应用程序部分(实际上是一个简单的IFrame对象)的源加载,事实上,在添加应用程序部分时,页面被加载了多次。添加应用程序部件后,警报只会触发一次,我没有遇到任何未定义的“对象”错误。因此,我怀疑我的应用程序部分是首先创建的,然后经过多次操作(从DOM连接和分离)

似乎我的应用程序部分,因为它暂时从DOM中删除,所以删除了JavaScript API!如果是这种情况,那么我如何开发依赖JavaScript的应用程序部件(难道它们不应该首先依赖JavaScript吗?!).

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

//为IE9工作(http://msdn.microsoft.com/en-us/library/gg622929(v=VS.85)。aspx?ppud=4)
if(typeof对象=='undefined'| | typeof函数=='undefined'){
window.location.reload();
}
不过,这种“先发制人”的垃圾收集对我来说似乎是一个bug,而不是一个特性