我有包含 Flash 对象列表的 div。该列表很长,因此我将 div 高度设置为 400,并将溢出设置为自动。

这在 FF 上工作正常,但在 IE6 上只有前 5 个可见的 Flash 对象有效。当我向下滚动时,最初位于可视区域之外的其余 Flash 对象是空的。swf 加载正常,因为我没有收到“电影未加载”的消息。它们似乎也被正确嵌入,它们只是空的,即。内容永远不会被绘制。

有想法该怎么解决这个吗?

附:涉及到的html元素主要是浮动的以防对此有影响。Flash 对象是使用流行的 swfObject 嵌入的。

编辑:看来这个bug只发生在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;页面加载时可见性:隐藏”。后来通过 javascript 将样式更改为可见。如果我加载页面以便所有内容从一开始就可见,那么一切都很好。

有帮助吗?

解决方案 4

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

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

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

其他提示

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

我会尝试的一些事情:

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

我听说过 Flash 中的一个错误,显然只有当 Flash 的部分内容加载到屏幕之外时(即,正文 > #flash {margin-top:-50px})。您的问题可能是该问题的变体。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top