0

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

这在 FF 上运行良好,但在 IE6 上只有前 5 个可见的 flash 对象有效。当我向下滚动时,最初位于可视区域之外的其余 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 具有“显示:无;可见性:隐藏”。后来样式通过javascript更改为可见。如果我加载页面以便从一开始就可以看到所有内容,那么一切都很好。

4

4 回答 4

0

当我在 IE6 中测试这类东西时,我做的第一件事就是开始删除样式信息。首先从父 DIV 和子 DIV 中删除所有浮动和清除。如果这不起作用,请删除所有填充和边距,并为父 DIV 和子 DIV 分别设置 100% 的宽度(保留 100 像素的高度)。如果这不起作用,请返回此处。如果我不得不冒险猜测,我会说这是因为您的 DIV 都没有宽度,但根据我对“peekaboo bug”的了解,这是一个疯狂的猜测。

于 2008-10-21T14:51:01.113 回答
0

我会尝试的几件事:

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

我听说过Flash 中的一个错误,该错误显然仅在Flash 在屏幕外加载部分内容时才会出现(即body > #flash {margin-top:-50px})。您的问题可能是这种情况的变体。

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

于 2008-10-21T22:13:58.567 回答
0

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

于 2008-11-05T12:04:06.860 回答
0

我想我有一个解决方案。我不能绝对肯定,因为有问题的页面已经重组(因为这个错误)。后来我偶然发现了一个类似的问题,在不同的页面上使用相同的 Flash 组件。

问题是有时 flash 会给出 Stage.height=0 和 Stage.width=0。当 Flash 在浏览器视口之外启动时,最有可能发生这种情况。我们使用舞台尺寸来缩放内容(在本例中为 width=0 和 height=0)。

解决方案是添加一个 onEnterFrame 处理程序,用于检查 Stage 尺寸,并且仅在它们 > 0 时继续。

于 2009-01-20T14:15:24.790 回答