滚动div内的Flash - IE6错误

时间:2008-10-21 07:24:57

标签: javascript html flash internet-explorer-6 swfobject

我的div包含一个flash对象列表。列表很长,所以我将div高度设置为400并溢出为auto。

这在FF上运行正常,但在IE6上只有前5个可见的flash对象。当我向下滚动时,最初在可视区域之外的其余闪存对象是空的。 swfs加载正常,因为我没有得到“未加载电影”。它们似乎也正确嵌入它们只是空的即。内容永远不会被绘制。

有关如何解决此问题的任何想法?

PS。涉及的html元素主要是浮动,以防对此产生影响。使用流行的swfObject嵌入flash对象。

编辑:似乎只有flash插件“WIN 8,0,24,0”才会出现这个bug

由于我无法发布链接,我将在此汇总相关代码:

<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更改为可见。如果我加载页面以便从一开始就可以看到所有内容,那么一切都很好。

4 个答案:

答案 0 :(得分:0)

当我在IE6中测试这种东西时,我要做的第一件事就是开始删除样式信息。首先从父DIV和子DIV中删除所有浮动和清除。如果这不起作用,删除所有填充和边距,并为父DIV和子DIV提供100%的宽度(留在100px的高度)。如果这不起作用,那么回到这里。如果我不得不猜测我会说这是因为没有你的DIV有宽度,但根据我所知道的“躲猫猫”,这是一个疯狂的猜测。

答案 1 :(得分:0)

我尝试过的一些事情:

  • 暂时删除所有CSS以确定问题是否是特定于CSS的
  • 将像素宽度添加到浮动元素及其父元素
  • 将wmode透明参数添加到swfobject
  • 添加职位:亲属

我听说过Flash中的一个错误,显然只有当闪存加载了部分屏幕外的情况时才会出现错误(即主体&gt; #flash {margin-top:-50px})。您的问题可能是其中的一个变种。

或者,您可以完全删除带有溢出的div并尝试使用滚动条在flash中创建容器,并将各个SWF加载到该容器flash文件中。

答案 2 :(得分:0)

这只是一种解决方法,但您可以尝试最初为Flash对象创建占位符(例如具有相应高度和宽度的div),并且只在第一次成为幻灯片时加载电影(通过类似swfobject的内容)可见。这可能会产生一些问题(即电影在可见之前没有预加载),但这可能是可以接受的。

答案 3 :(得分:0)

我想我有一个解决方案。我不能完全确定有问题的页面是重组的(因为这个bug)。后来我在另一个页面上偶然发现了同一个flash组件的类似问题。

问题在于,有时flash会给出Stage.height = 0和Stage.width = 0。当闪存在浏览器视口外部启动时,最有可能发生这种情况。我们使用Stage维度来缩放内容(在这种情况下,width = 0和height = 0)。

解决方案是添加一个onEnterFrame处理程序,该处理程序检查Stage维度,并且只有在&gt;时才会继续。 0