В этом конкретном случае вместо того, чтобы пытаться скрыть ошибку, вы можете полностью ее избежать (или укажите вашему поставщику на этот пост, чтобы исправить их JavaScript):
- Возможно, сервер вообще не возвращает значения для "открытых вкладок" в приведенном ниже JavaScript; попробуйте изменить настройки вкладок виджета, чтобы заставить сервер установить какое-либо значение. Если вы не можете сделать это на настенном экране, попробуйте в обычном браузере, надеясь, что это сохранит настройки на сервере.
Если это не помогает, попробуйте следующее в "обычном" браузере Internet Explorer:
Возможно, домен URL-адреса, который вы используете, отличается от домена, из которого загружается скрипт (или: URL-адрес, с которого виджет загружает свой HTML или данные), из-за чего IE чувствует, что обрабатывает сторонние файлы cookie. Итак: посмотрите, что дает вам разрешение на использование сторонних файлов cookie. См. Блокировку, включение или разрешение файлов cookie от Microsoft.
Возможно, установка или чтение файлов cookie в JavaScript требует дополнительных прав. Итак: посмотрите, поможет ли добавление daviker.whccs.com
к доверенным сайтам, чтобы сделать это немного больше? См. Зоны безопасности Microsoft : добавление или удаление веб-сайтов.
Возможно, сервер уже установил cookie с тем же именем, но пометил его как HttpOnly, что делает его недоступным из JavaScript. Попробуйте удалить все существующие cookie-файлы «активных вкладок».
Фон:
Ошибка в строке 1546 сценария связана с тем, что конкретный файл cookie не доступен для этого сценария, сразу после того, как тот же сценарий попытался установить / изменить сам этот файл cookie (в строке 1541, где его значение может фактически быть undefined
как строка 1533). не может проверить это):
1527 restoreTabsFromTheServer: function()
1528 {
1529 $.post("xrm_ui?get=getTabs", {}, function(responce) {
1530
1531 reportTabs.tabCaptions = responce.reportPages;
1532
// Next line only checks for an empty "openedtabs", not for
// an undefined or null value; bad coding...
1533 if (responce.openedtabs == '')
1534 {
1535 $.cookie("active-tabs", '');
1536 reportTabs.tabidSelected = undefined;
1537 reportTabs.tabindexSelected = undefined;
// Next line would exit the function if we had an empty
// result, but not if it is undefined or null
1538 return false;
1539 }
1540
// Next line: NO ERROR WHILE WRITING, but the new value could
// be undefined, which might even clear an existing cookie?
1541 $.cookie("active-tabs", responce.openedtabs);
1542 reportTabs.tabidSelected = responce.tabidselected;
1543 reportTabs.tabindexSelected = responce.tabindexselected;
1544
1545 // restore tabs
// Next line: NO RESULT WHEN READING
1546 var arr = $.cookie("active-tabs").split(',');
1547 ...
Таким образом, кажется, что встроенный IE игнорирует настройку JavaScript для этого cookie, или JavaScript устанавливает cookie как неопределенный. А затем при попытке прочитать его значение пусто †.
Я не знаю, использует ли встроенный компонент IE "обычные" настройки браузера IE для файлов cookie. Но я наверняка видел, как встроенные компоненты IE делят куки с браузером IE. (Как и при нажатии на ссылки в Excel, когда IE не является браузером по умолчанию, куки-файлы IE все еще используются для некоторого обнаружения.) Так что, возможно, изменение настроек в "обычном" браузере IE позволит JavaScript установить этот cookie во встроенном компоненте.
† В качестве альтернативы, возможно, значение, полученное с сервера в строке 1529, не является допустимым значением, что приводит к сбою записи или чтения. Как и запятые не разрешены в куки, поэтому .split(',')
выглядит подозрительно. Но потом: мы даже не знаем, какой плагин jQuery используется для $.cookie
, поэтому нам нужно гораздо больше деталей, чтобы выяснить, использует ли он некоторую кодировку.