Я создаю веб-приложение, которое включает в себя запущенную анимацию, которая воспроизводит поведение непереносимого элемента marquee
.Я использую http://jscroller2.markusbordihn.de/ для этого эффекта, но основная причина проблемы, похоже, не связана напрямую с самой библиотекой (это всего лишь триггер, который выявляет проблему).
Точная проблемаследующим образом:
У меня есть HTML form
с несколькими input
текстовыми полями, которые пользователь должен заполнить.Анимация marquee
выполняется каждые X миллисекунд (где X меньше 1 секунды).Всякий раз, когда текстовое поле находится в фокусе (пользователь нажимает на него с намерением заполнить его), текстовый курсор не мигает (как и должно быть) и остается постоянно в форме столбца (как знак |
- извините за мой язык... :-)).
Я сократил код ошибки до минимума, и вы можете попробовать его здесь: http://jsfiddle.net/kyVqk/.
Чтобы проверить, просто нажмитеStart
, а затем нажмите на текстовое поле.Точка должна быть добавлена к метке под входным текстом каждый раз, когда запускается анимация, и курсор не должен мигать (в этом проблема).Обратите внимание, что если анимация запускается с интервалами времени более 1 секунды, этого не происходит (вы можете проверить это в предыдущем скрипте), и курсор мигает, как и ожидалось.Это привело меня к убеждению, что проблема заключается в том, как браузер выполняет рендеринг текста и расфокусирует / перефокусирует поле в процессе обновления.
Эта проблема характерна для Internet Explorer (по крайней мере, в версии 6), поскольку другие основные браузеры (Firefox и Chrome) не демонстрируют это поведение.Я попытался обновить метку через объект DOM innerHTML
напрямую, но безуспешно.Точное содержание, которое изменилось, также не имеет значения.Если анимация считывает только свойства элемента, проблема не возникает (только при обновлении свойств элемента - любого свойства).
Поскольку проект, над которым я работаю, имеет высокую видимость и подверженность клиентов,клиент не хочет, чтобы это прошло.Кто-нибудь может пролить свет на то, почему это происходит?Есть ли обходной путь (присоединение / отсоединение элементов от DOM до / после анимации, перефокусировка после анимации и т. Д.)?Обратите внимание, что потерять эффект marquee
нельзя.