пятница, 17 февраля 2012 г.

Проблемы ReportViewer2010 + UpdatePanel + SharePoint2010 в Chrome и Safary или Uncaught Sys.ScriptLoadFailedException: Sys.ScriptLoadFailedException: The script '.....' could not be loaded. Uncaught TypeError: Cannot read property '_notified' of null.

Исходные данные.
Имеем ВебПарт(WebPart) для SharePoint2010. В этом вебпарте находится АпдейтПанель (UpdatePanel).  В апдейтпанели имеем соответственно РепортВьювер10 (ReportViewer 10).

Ситуация.
 В IE9.0 и Firefox рапорт отображается корректно. А вот в Chrome и Safari ничего не отображается. Вернее отображается НЕ активный репортвьювер контрол, без контента. Причем если убираем апдейтпанель - то рапорт начинает корректно отображаться во всех броузерах.  При попытке смоделировать подобную ситуацию посредством обычного веб-сайта созданного через VS2010 (апдейт панель + репорт вьювер) никаких ошибок не возникает. А вот в SharePoint2010 имеется...

Исследование.
Через хромовый девелопер тул (F12) определил что возикает две джаваскриптовые ошибки
1.Uncaught Sys.ScriptLoadFailedException: Sys.ScriptLoadFailedException: The script '....' could not be loaded.
2. Uncaught TypeError: Cannot read property '_notified' of null
и все это в файле MicrosoftAjaxWebForms.js...


Решение.
Порывшись в инете нашел что подобная ошибка возникает частенько с этими браузерами при использовнии UpdatePanel/AjaxToolkit - все что использует ScriptManager. MicrosoftAjax одним словом... Проблема заключается в том что в MicrosoftAjaxWebForms.js  не корректно определяются WebKit-овские броузеры. Если добавить на страницу следующий код :

Sys.Browser.WebKit = {};
if (navigator.userAgent.indexOf('WebKit/') > -1) {
    Sys.Browser.agent = Sys.Browser.WebKit;
    Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
    Sys.Browser.name = 'WebKit';
}

то все начинает работать корректно. Такое впечатление что корректный джаваскрипт для  работы этих броузеров присутствует, а вот определитель работает не корретно. В общем эти строчки решили проблему. Но остается вопрос - почему это происходило в   SharePoint2010 и не просходило на простом вебсайте. Единственное обьяснение которое я вижу - это то что используются различные версии аджаксовых скриптов для этих продуктов.


English version of this post >>
WWW.LANTERIA.COM

Комментариев нет:

Отправить комментарий