Polyfill для обхода проблемы с браузерным автозаполнением форм

в 8:39, , рубрики: AngularJS, javascript, браузеры, костыли, метки: , , ,

Год назад в репозитории AngularJS был создан issue #1460 «Form model doesn't update on autocomplete».

Браузер, при автозаполнении формы ранее сохраненными данными (например, вводим email — браузер заполняет пароль автоматически) никак не извещает javascript о новых данных в поле.

За время существование этой проблемы были написаны различные костыли, которые можно оценить в комментариях к issue. Сейчас же появился костыль официальный. И пока разработчики браузеров на проблему внимания не обращают, это оптимальное решение — Autofill event polyfill.

Придется подключать еще один скрипт. Принцип работы таков — по «DOMContentLoaded» скрипт пробегает по полям и запоминает их текущее значение value, после таймаута в 200 милисекунд сравнивает сохраненное ранее значение с текущим, если они отличаются — вызывается событие «change» для поля. По событию «blur» для одного из полей, снова запускается проверка.

Ссылки:
Autofill event polyfill
issue #1460

Автор: snater

Источник

Поделиться

* - обязательные к заполнению поля