Flash внутри прокрутки div - ошибка IE6 - PullRequest
0 голосов
/ 21 октября 2008

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

Это отлично работает на FF, но на IE6 работают только первые 5 видимых flash-объектов. Остальные объекты Flash, которые изначально находятся за пределами видимой области, становятся пустыми, когда я прокручиваю вниз. SWFs загружены нормально, потому что я не получаю "фильм не загружен". Они также, кажется, вставлены правильно, они просто пусты, т.е. содержание никогда не рисуется.

Есть идеи как это исправить?

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

РЕДАКТИРОВАТЬ: Кажется, что ошибка возникает только с флэш-плагин "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>

EDIT: После попытки воссоздать эту проблему на отдельной странице, я обнаружил, что ошибка в некоторой степени связана с тем, что флэш-объекты изначально были скрыты. У моего контейнера div есть «display: none; visibility: hidden» при загрузке страницы. Позже стиль меняется с помощью JavaScript на видимый. Если я загружаю страницу так, чтобы все было видно с самого начала, все в порядке.

Ответы [ 4 ]

0 голосов
/ 20 января 2009

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

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

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

0 голосов
/ 22 октября 2008

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

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

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

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

0 голосов
/ 05 ноября 2008

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

0 голосов
/ 21 октября 2008

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

...