Ошибка JavaScript во встроенном Internet Explorer

2578
man-qa

У меня есть настройка настенного экрана для отображения статистики в офисе, однако виджет, который использует встроенный Internet Explorer, продолжает выдавать ошибку JavaScript.

enter image description here

Ошибка может быть закрыта, не вызывая проблем, но она раздражает, так как она появляется снова и снова примерно 2-3 раза в день, и когда это происходит, она останавливает кого-либо от просмотра статистики, пока она не будет закрыта с помощью удаленного доступа к настенному экрану. В обычном Internet Explorer это можно легко остановить, сняв флажок ниже.

enter image description here

У меня вопрос: как отключить всплывающее окно с сообщением об ошибке скрипта в Internet Explorer, встроенном в мой виджет?

Изменить: Ответ на ответ от Harrymc

Теперь я отредактировал эти настройки, используя regedit в соответствии с инструкциями harrymc, однако ошибка все равно появляется.

2
Вы хотите сказать, что настенный экран не дает вам доступа к настройкам Интернета? Кроме того, ошибку JS довольно легко исправить. В коде отсутствует проверка, чтобы справиться с нулевой или неопределенной переменной. Julian Knight 8 лет назад 2
К сожалению, у меня нет доступа к коду, все встроено, так что я могу изменить только основные настройки. Я могу изменить настройки браузера на настенном экране, но встроенный IE, похоже, использует отдельные настройки man-qa 8 лет назад 0
Вы можете редактировать реестр машины? Может быть, вы сможете установить опцию панели управления IE через реестр? Kinnectus 8 лет назад 0
Я могу отредактировать реестр, хотя я не уверен, какой вариант является правильным в regedit (есть много для IE), и как только я его найду, на что мне его поменять? man-qa 8 лет назад 0
Почему бы вам просто не исправить JavaScript, чтобы устранить ошибку? Ramhound 8 лет назад 0
В дополнение: обратите внимание, что, хотя вы пишете * «Ошибка может быть закрыта без проблем» *, похоже, что на самом деле [совсем немного JavaScript] (https://daviker.whccs.com/reports/js/ rm.ui.js) не выполняется после возникновения ошибки. Кроме того, если однажды этот удаленный сценарий изменится, все может закончиться неудачно. Полагаю, лучше всего обратиться в службу поддержки к поставщику, но, конечно, это не то, о чем вы спрашиваете. Arjan 8 лет назад 0
Вероятно, это отладчик, который выдает ошибку, попробуйте отключить. S.Visser 8 лет назад 0
Любые обновления? Вы пробовали какие-либо из моих предложений? Arjan 8 лет назад 0
Привет, Арджан, нет, извини, я не дал им попробовать, ответ Гарримка, похоже, сделал свое дело, я просто ждал, чтобы увидеть, было ли это постоянное исправление man-qa 8 лет назад 0

2 ответа на вопрос

2
harrymc

As you can edit the registry, the following article lists many IE settings :
How to Customize Virtual Internet Explorer Settings.

To disable "Display a Notification about Every Script Error", use the following .reg file :

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main] "Error Dlg Displayed On Every Error"="no" 
Привет harrymc, пожалуйста, смотрите мой ответ выше man-qa 8 лет назад 0
Неважно, я думаю, что я решил это сейчас. реестр, о котором вы работали, не был на настенном экране, но был на моем компьютере, поэтому я экспортировал его и скопировал его, просто нужно подождать и посмотреть, вернется ли ошибка сейчас man-qa 8 лет назад 0
Вздох, ошибка все еще появляется даже с измененным реестром man-qa 8 лет назад 0
Вам может потребоваться перезагрузка. harrymc 8 лет назад 0
Я перезапустил программное обеспечение, вы имеете в виду весь настенный ПК? man-qa 8 лет назад 0
Да, это то, что я имею в виду. harrymc 8 лет назад 0
Полностью перезапущен сейчас, так что я буду следить за появлением ошибки man-qa 8 лет назад 0
Ошибок пока нет, все равно буду продолжать следить, хотя, как известно, время от времени уходило, а потом возвращалось. man-qa 8 лет назад 0
2
Arjan

В этом конкретном случае вместо того, чтобы пытаться скрыть ошибку, вы можете полностью ее избежать (или укажите вашему поставщику на этот пост, чтобы исправить их 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 установить этот куки-файл во встроенном компоненте.


† В качестве альтернативы, возможно, значение, полученное с сервера в строке 1529, не является допустимым значением, что приводит к сбою записи или чтения. Подобные запятые не допускаются в печенье, поэтому .split(',')выглядит подозрительно. Но потом: мы даже не знаем, для чего используется плагин jQuery $.cookie, поэтому нам нужно гораздо больше деталей, чтобы выяснить, использует ли он некоторую кодировку.

Хотелось бы узнать бонусные баллы за попытку решить проблему вместо симптома (т.е. не загружать скрипт или просто игнорировать ошибку). Ramhound 8 лет назад 1
Спасибо, @Ramhound. С другой стороны, возможно, мой ответ слишком специфичен для сайта Stack Exchange Q & A (что касается вероятности того, что у будущего посетителя будет такая же проблема) ... Arjan 8 лет назад 0
Ваш ответ был не тот, который я использовал, но он был намного лучше: p man-qa 8 лет назад 0
Ах, когда не предоставлено никаких учетных данных, GET для [`xrm_ui? Get = getTabs`] (https://daviker.whccs.com/reports/xrm_ui?get=getTabs) выдает` null`, а не пустую строку, например для других значений: `{" opentabs ": null," tabindexselected ":" "," tabidselected ":" "}`. Может быть, то же самое происходит, когда скрипт выполняет POST, предположительно с надлежащей аутентифицированной сессией. Arjan 8 лет назад 0