Как сделать хром заново рендерить элементы, прежде чем показывать оповещения?
В сценарии проверки я устанавливаю класс недопустимых элементов таким образом, чтобы они отображались красным цветом, а затем отображался
alert
попросите пользователя исправить выделенные ошибки.Однако в Chrome предупреждение отображается до того, как элемент будет перерисован. Это может привести к путанице для пользователя, так как нет выделенных полей.
Когда вы проходите через код, все работает нормально, так как страница перерисовывается на каждом шаге.
В Firefox браузер отображает полупрозрачный фон за полем предупреждения и визуализацию поля ввода ошибок является обновлено до готовности. Ребро ведет себя аналогично (но с белым полупрозрачным слоем вместо черного). IE также перерисовывает поле ошибки, но не использует полупрозрачный слой.
Что я уже пробовал:
Хотя это кажется "неправильным" подходом, я попытался поместить предупреждение в
setTimeout
звоните, оттягивая время alert
на секунду (или больше, или меньше). Однако это не имеет необходимого эффекта; повторная визуализация выделенного поля ввода все еще не происходит до тех пор, пока не будет показано окно предупреждения. Я тоже пытался
$('#txtDemo').hide().show()но никакой помощи...
Поиск в Google предполагает, что у других были подобные проблемы, и они обнаружили, что запрос
offsetHeight
может заставить Chrome перерисовать, но этот обходной путь не работает в текущих версиях Chrome.Смотрите мою демо-страницу по адресу codeproject.derektp.co.uk/sequence.htm[^]