Проблемы с JavaScript ломают браузер?

Я использую Оптимизатор веб-сайта, и он выполняет проверку файлов cookie на стороне клиента, чтобы показать контент только один раз.

Тем не менее, когда они готовятся, я получаю ошибку javascript, которая не СДЕЛАЕТ фатальную, но я прочитал, что ошибки 1 js достаточно, чтобы полностью сломать Internet Explorer.

рассматриваемая строка кода <script>utmx_section("Blah")</script>

Эта строка предоставлена ​​непосредственно Google, но я получаю сообщение об ошибке, которое не определено. Теперь он работает в самом низу страницы, поэтому в худшем случае GA не работает.

Но каковы опасности?


РЕДАКТИРОВАТЬ: Я не просил напрямую отладки JS, потому что проблема эзотерическая, и это возможно из-за ошибки или ошибочного предположения. Вопрос был в том, опасно ли игнорировать проблему.

Я получаю сообщение об ошибке: "utmx_section не определено", хотя JavaScript, который предоставляет соответствующую функцию, включен правильно, и единственное отличие между страницами, на которых он выдает ошибку, и теми, на которых она не возникает, заключается в том, что некоторые дополнительные JQuery запускаются (из-за условия, которое проверяет наличие cookie) на страницах, которые не выдают ошибку.

ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Обошли проблему, заставив PHP условно выполнять строку utmx только тогда, когда это будет необходимо (т. Е. Для несобранных пользователей).

3 ответа

Решение

У большинства пользователей отключены уведомления JavaScript, поэтому они не увидят ошибку. Ошибка не "сломает браузер" в вашем случае; где он прерывается, это последующие вызовы этой функции и любой код после этого вызова в этом блоке скрипта:

utmx_section("Blah");
// later:
utmx_section("Correct"); <-- will not fire

а также:

utmx_section("Blah"); 
var a = b; <-- will not fire
doStuff(); <-- will not fire

Исправить это в PHP было сложно. Просто добавьте условное. И вы должны использовать "окно", чтобы посмотреть, существует ли глобальная переменная:

if(window.utmx_section){
    utmx_section("Blah");
}

Чтобы ответить строго на вопрос в заголовке "Проблемы с JavaScript ломают браузер?", Некоторые делают.

Учтите следующее:

<script type="text/javascript">
  function doSomething() {
     //some stuff here
  }      
  for (;;) {
    doSomething();
  }

</script>

Не все браузеры достаточно умны, чтобы обнаружить подобные проблемы. Это приведет к зависанию вашего браузера, так что вам придется идти вразрез с его процессом.

Новые браузеры обнаруживают это и отображают уведомление, позволяющее убить скрипт в браузере, но, как я уже сказал, не все достаточно умны.

Что касается тела вашего вопроса, не уверен, что проблема с <script>utmx_section("Blah")</script> является. Не могли бы вы предоставить более подробную информацию?

Я не совсем уверен, что вы подразумеваете под "когда они приготовлены"
Тем не менее, да, фрагмент javascript обычно вызывает остановку дальнейшей обработки javascript.

В любом случае, вы должны отладить проблему. Код Google Analytics работает на огромном количестве сайтов, так что я предполагаю, что у вас действительно есть проблема в другом месте. Либо в том, как вы скопировали код, зависимости, либо в какой-то из ваших, которые фильтруются.

Другие вопросы по тегам