2013-03-16 47 views
0

爲SharePoint 2013開發(SharePoint託管的)應用程序部件時,我會持續獲取未定義的錯誤消息'對象'。在其他occassions(取決於我正在加載哪個外部.js文件)我可能會得到'函數'未定義的錯誤。更具體地說:當我將應用程序部分添加到(wiki)頁面時,我只會遇到這個錯誤。該頁面以標準模式加載到IE9中(但該錯誤也發生在「兼容視圖」中)。SharePoint 2013應用程序:'對象'未定義(IFrame/IE9)

我發現下面的信息微軟:API是不可用如果iframe是從DOM樹中刪除=>http://msdn.microsoft.com/en-us/library/gg622929(v=VS.85).aspx?ppud=4

我添加了一個簡單的警報到HTML頁面的頭,我試圖加載作爲應用程序部分的來源(實際上它是一個簡單的IFrame對象),並且實際上在添加應用程序部分時會多次加載該頁面。一旦添加了應用部分,警報只會觸發一次,並且我不會遇到任何'對象'未定義的錯誤。所以我懷疑我的應用程序部分是第一次創建,然後多次操作(連接並從DOM中分離)。

看來我的應用程序部分,因爲它暫時從DOM中刪除,所以刪除了JavaScript API!如果是這種情況,那我該如何開發依賴於JavaScript的應用部分(並且他們不應該首先依賴於JavaScript?)...

回答

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> 

儘管如此,垃圾的這種「先發制人」的集合,我似乎是一個錯誤,而不是一個功能!

相關問題