Проблемы с мерцанием Internet Explorer - PullRequest
3 голосов
/ 16 декабря 2011

Я создаю веб-приложение, которое включает в себя запущенную анимацию, которая воспроизводит поведение непереносимого элемента 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 нельзя.

1 Ответ

0 голосов
/ 19 декабря 2011

В прошлом у меня были мерцающие пробники с IE, не знаю, совпадает ли он с вашим, но попробуйте:

//@cc_on document.execCommand("BackgroundImageCache", false, true);// don't remove : prevent IE6 cursor blinking

Тогда еще одно исправление, которое я помню, это установить фиксированный фон для тела ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...