27 июня 2014

TypeError: window.event is undefined

Как-то раз меня попросили заставить работать один раздел сайта, написанный на чистом javascript, в Google Chrome и Firefox.

Вот ошибка, с которой я столкнулся:
TypeError: window.event is undefined

Код, вызвавший ошибку:
function divisionExpand () {
    var division = window.event.srcElement;
    var iddivision = division.id;
    # ...
}
Данная функция должна разворачивать скрытый блок с содержимым при клике на элементе. В html-файле было написано следующее:
<img onclick="javascript:divisionExpand()" src="/img/p.gif">

Причина ошибки в не кроссбраузерном получении объекта event.
Для исправления нужно в html написать:
<img onclick="javascript:divisionExpand(event)" src="/img/p.gif">

В javascript-файле написать:
function divisionExpand(event){
    # Кроссбраузерное получение объекта event
    var event = event || window.event;

    # Кроссбраузерное получение объекта target
    var target = event.target || event.srcElement;
    var iddivision = target.id;
    # ...
}

18 июня 2014

Не определяется переменная, заданная в теге script

Можно столкнуться с ситуацией, когда переменная, определенная в теге script , не определяется на странице.

В Firebug выводится следующее сообщение об ошибке:

Данная ошибка может быть связана с некорректностью верстки.

Проверить валидность верстки можно следующими способами:
1. На сайте http://validator.w3.org/
2. При помощи плагина для браузера. В Firefox, примеру, это HTML Validator. Для других браузеров вы можете найти плагин валидации html, введя в поисковике запрос html validator plugin.

Я веду разработку в Firefox, поэтому при нажатии на Ctrl + U я увидел результаты валидации html моей страницы:


Вот таким образом невалидная верстка может испортить работу вашего веб-приложения.