Исходные данные.
Имеем ВебПарт(WebPart) для SharePoint2010. В этом вебпарте находится АпдейтПанель (UpdatePanel). В апдейтпанели имеем соответственно РепортВьювер10 (ReportViewer 10).
Ситуация.
В IE9.0 и Firefox рапорт отображается корректно. А вот в Chrome и Safari ничего не отображается. Вернее отображается НЕ активный репортвьювер контрол, без контента. Причем если убираем апдейтпанель - то рапорт начинает корректно отображаться во всех броузерах. При попытке смоделировать подобную ситуацию посредством обычного веб-сайта созданного через VS2010 (апдейт панель + репорт вьювер) никаких ошибок не возникает. А вот в SharePoint2010 имеется...
Исследование.
Через хромовый девелопер тул (F12) определил что возикает две джаваскриптовые ошибки
Решение.
Порывшись в инете нашел что подобная ошибка возникает частенько с этими браузерами при использовнии 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 и не просходило на простом вебсайте. Единственное обьяснение которое я вижу - это то что используются различные версии аджаксовых скриптов для этих продуктов.
Имеем ВебПарт(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