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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Когда я тестирую подобные вещи в IE6, первое, что я делаю, это удаляю информацию о стиле. Начните с удаления всех плавающих и очищающих элементов как из родительского, так и из дочерних DIV. Если это не сработает, удалите все отступы и поля и дайте каждому родительскому DIV и дочерним DIV ширину 100% (оставив высоту 100 пикселей). Если это не сработает, напишите здесь. Если бы мне пришлось рискнуть предположить, я бы сказал, что это потому, что ни один из ваших DIV не имеет ширины, но это дикая догадка, основанная на том, что я знаю о «ошибке peekaboo».
Я не уверен, что это ошибка пикабу, но могу ошибаться. Все на странице отображается правильно. т.е. все точно в нужном месте даже вспышка. не хватает только флеш-содержимого. Это почти как если бы никто не забыл вызвать "воспроизведение" на флеш-файлах.
Несколько вещей, которые я бы попробовал:
Я слышал об ошибке во Flash, которая, по-видимому, возникает только в том случае, если флэш загружается с частями за пределами экрана (например, body> #flash {margin-top: -50px}). Ваша проблема потенциально может быть вариацией этого.
В качестве альтернативы вы можете полностью отбросить div с переполнением и попробовать создать контейнер во флэш-памяти с полосой прокрутки и загрузить отдельные SWF-файлы в этот один флэш-файл контейнера.
Спасибо за попытку. Удаление всех css было бы сложной задачей, но я попытался удалить все, что имеет какое-либо влияние на рассматриваемые компоненты. Ширина определяется. Я пробовал разные варианты wmode. К сожалению, перемещение всего в одном флэш-контейнере здесь не вариант.
Это всего лишь обходной путь, но вы можете попытаться изначально создать заполнители для объектов Flash (например, div с соответствующей высотой и шириной) и загружать фильм (через что-то вроде swfobject) только тогда, когда он впервые становится видимым. Это может создать некоторые проблемы (например, фильмы не загружаются до того, как они будут видны), но это может быть приемлемо.
Думаю, у меня есть решение для этого. Я не могу быть полностью уверен, так как рассматриваемая страница была реструктурирована (из-за этой ошибки). Позже я наткнулся на аналогичную проблему с тем же флэш-компонентом на другой странице.
Проблема заключалась в том, что иногда flash выдает Stage.height = 0 и Stage.width = 0. Скорее всего, это произойдет, когда флэш-память инициируется вне области просмотра браузера. Мы используем размеры рабочей области для масштабирования содержимого (в данном случае ширина = 0 и высота = 0).
Решение состояло в том, чтобы добавить обработчик onEnterFrame, который проверяет размеры рабочей области и продолжает работу только после того, как они> 0.
IE6 - настоящая головная боль в ***