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