2013-03-16 1 views
0

При разработке (SharePoint Host) части приложения для SharePoint 2013 я постоянно получаю сообщение об ошибке «Объект» не определен. В других случаях (в зависимости от того, какой внешний файл .js я загружаю), я мог бы получить ошибку «Function», не определенную. Чтобы быть более конкретным: я получаю только эту ошибку, когда добавляю часть приложения на страницу (вики). Страница загружается в IE9 в режиме стандартов (но ошибка также возникает в представлении «Совместный просмотр»).Приложение SharePoint 2013: «Объект» не определен (IFrame/IE9)

я нашел следующую информацию в Microsoft: API, не доступен, если плавающий фрейм Исключен из дерева 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> 

Тем не менее, это «упреждающий» сбор мусора мне кажется, ошибка, а не функции!

Смежные вопросы