Вспышка внутри прокручиваемого div - ошибка IE6

У меня есть div, содержащий список флеш-объектов. Список длинный, поэтому я установил высоту div на 400, а переполнение - на auto.

Это отлично работает в FF, но в IE6 работают только первые 5 видимых flash-объектов. Остальные флэш-объекты, которые изначально находятся за пределами видимой области, становятся пустыми, когда я прокручиваю вниз. Файлы swf загружаются нормально, потому что я не получаю сообщение «фильм не загружен». Они также кажутся встроенными правильно, они просто пустые, т.е. контент никогда не прорисовывается.

Есть какие нибудь идеи как это починить?

пс. Используемые элементы html в основном являются плавающими, если это повлияет на это. Flash-объекты встраиваются с помощью популярного swfObject.

Обновлено: Кажется, что ошибка возникает только с плагином flash "WIN 8,0,24,0"

Поскольку я не могу опубликовать ссылку, я резюмирую соответствующий код здесь:

<div style = "overflow:auto; height:400px; float:left;">
<div id = "item_1" style = "float:left; clear:left; height:100px;">
<!-- swfObject Embed here -->
</div>
...
<div id = "item_7" style = "float:left; clear:left; height:100px;">
<!-- swfObject Embed here -->
</div>
</div>

Обновлено: Попытавшись воссоздать эту проблему на отдельной странице, я обнаружил, что ошибка в некоторой степени связана с изначально скрытыми объектами flash. В моем контейнере div при загрузке страницы отображается "display: none; visibility: hidden". Позже стиль будет изменен с помощью javascript на видимый. Если я загружу страницу так, чтобы все было видно с самого начала, все в порядке.

IE6 - настоящая головная боль в ***

schonarth 21.10.2008 14:41

Извините, я не могу дать вам ссылку в настоящее время, так как страница не является общедоступной. Я добавлю некоторую информацию к вопросу.

Gene 21.10.2008 15:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
2 612
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Когда я тестирую подобные вещи в IE6, первое, что я делаю, это удаляю информацию о стиле. Начните с удаления всех плавающих и очищающих элементов как из родительского, так и из дочерних DIV. Если это не сработает, удалите все отступы и поля и дайте каждому родительскому DIV и дочерним DIV ширину 100% (оставив высоту 100 пикселей). Если это не сработает, напишите здесь. Если бы мне пришлось рискнуть предположить, я бы сказал, что это потому, что ни один из ваших DIV не имеет ширины, но это дикая догадка, основанная на том, что я знаю о «ошибке peekaboo».

Я не уверен, что это ошибка пикабу, но могу ошибаться. Все на странице отображается правильно. т.е. все точно в нужном месте даже вспышка. не хватает только флеш-содержимого. Это почти как если бы никто не забыл вызвать "воспроизведение" на флеш-файлах.

Gene 22.10.2008 10:29

Несколько вещей, которые я бы попробовал:

  • временно удалите весь CSS, чтобы определить, связана ли проблема с CSS
  • добавить ширину в пикселях к плавающим элементам, а также их родительскому элементу
  • добавить прозрачный параметр wmode в swfobject
  • добавить позицию: относительная

Я слышал об ошибке во Flash, которая, по-видимому, возникает только в том случае, если флэш загружается с частями за пределами экрана (например, body> #flash {margin-top: -50px}). Ваша проблема потенциально может быть вариацией этого.

В качестве альтернативы вы можете полностью отбросить div с переполнением и попробовать создать контейнер во флэш-памяти с полосой прокрутки и загрузить отдельные SWF-файлы в этот один флэш-файл контейнера.

Спасибо за попытку. Удаление всех css было бы сложной задачей, но я попытался удалить все, что имеет какое-либо влияние на рассматриваемые компоненты. Ширина определяется. Я пробовал разные варианты wmode. К сожалению, перемещение всего в одном флэш-контейнере здесь не вариант.

Gene 22.10.2008 10:26

Это всего лишь обходной путь, но вы можете попытаться изначально создать заполнители для объектов Flash (например, div с соответствующей высотой и шириной) и загружать фильм (через что-то вроде swfobject) только тогда, когда он впервые становится видимым. Это может создать некоторые проблемы (например, фильмы не загружаются до того, как они будут видны), но это может быть приемлемо.

Ответ принят как подходящий

Думаю, у меня есть решение для этого. Я не могу быть полностью уверен, так как рассматриваемая страница была реструктурирована (из-за этой ошибки). Позже я наткнулся на аналогичную проблему с тем же флэш-компонентом на другой странице.

Проблема заключалась в том, что иногда flash выдает Stage.height = 0 и Stage.width = 0. Скорее всего, это произойдет, когда флэш-память инициируется вне области просмотра браузера. Мы используем размеры рабочей области для масштабирования содержимого (в данном случае ширина = 0 и высота = 0).

Решение состояло в том, чтобы добавить обработчик onEnterFrame, который проверяет размеры рабочей области и продолжает работу только после того, как они> 0.

Другие вопросы по теме