понедельник, 12 марта 2012 г.

В коллекцию граблей: chrome и html5

Сегодня столкнулся с проблемой, когда web-форма работает в IE, но отказывается работать в Chrome (чаще бывает наоборот=).
Неработоспособность заключается в том, что форма не отправляется.
html и js код верный. Повозился некоторое время и в результате понял причину. Дело оказалось в том, что разработчик реализовал по-умолчанию "скрывание" некоторых элементов управления от пользователя. В этом-то и оказался корень зла. Разработчик активно использовал нововведения HTML5 в виде возможности валидировать поля в броузере без js и до отправки на сервер. Речь идет об атрибутах required, maxlength... ( подробнее читать в стандарте )
Скрытые с помощью CSS контролы тоже имели подобные атрибуты, и разработчик ожидал , что броузеры не станут проверять то, что пользователю недоступно.
Ошибся.
Что касается IE, то ему на эти атрибуты вообще было плевать. Поэтому форма благополучно отправлялась.
chrome-же , действуя строго по стандарту, проверял все, не взирая на стили. Неожиданно для пользователя, но вполне логично с точки зрения разработчиков chrome.

Проблема решается, например, добавлением атрибута disabled тем элементам, которые надо спрятать.

Надеюсь, прочитавшие этот пост на подобные грабли не наступят :)

Комментариев нет:

Отправить комментарий