调整 iframe 大小时,如何防止 swf 刷新?

Posted

技术标签:

【中文标题】调整 iframe 大小时,如何防止 swf 刷新?【英文标题】:How do I prevent a swf from refreshing when an iframe is resized? 【发布时间】:2010-10-02 17:57:12 【问题描述】:

我正在调整 iframe 的大小,当我在 Firefox 中这样做时,内容会刷新。

我有一个扩展的 swf,在 Firefox 中,当 iframe 扩展以容纳 swf 时,该 swf 出现在其正常位置。

在 IE 中不会发生这种情况。

有人知道如何防止 Firefox 发生刷新吗?

谢谢


编辑:

好的,我认为页面没有被刷新,只是 swf 请在以下位置查看:

http://antoniocs.org/iframe/index_.html

您可以看到,在 Firefox 3 中进行重新尺寸调整时会出现快速“闪烁”,并且 swf 会返回其初始状态(未展开),而在 IE 中不会发生这种情况。

代码都是客户端的,所以如果你查看页面的源代码,你可以查看它。

【问题讨论】:

请提供示例页面 URL 来说明您的意思。调整大小通常不应该重新加载任何内容 - 除非你包含一个非常古老和陈旧的 Netscape 4 错误修复脚本,我希望你不在这个时代。 这里是测试页-> antoniocs.org/iframe/index_.html 【参考方案1】:

似乎设置position: absolute;.cssText都会刷新框架。

解决方案是将style="position: absolute;" 添加到您的<iframe> 并像这样设置您的css:

this.mrec_div_idObj.style.left = ((offsetLeftIframe) - (dimX - disX)) + "px";
this.mrec_div_idObj.style.top = (offsetTopDiv - disY) + "px";
this.mrec_div_idObj.style.zIndex = 99999999;
this.mrec_div_idObj.style.margin = 0;
this.mrec_div_idObj.style.padding = 0;

我已经对此进行了测试,它适用于 Firefox 3

【讨论】:

【参考方案2】:

Antonio,恐怕问题出在 Firefox 中。当 Gecko 检测到 iFrame 的宽度发生变化时,它会重新绘制页面并导致“刷新”。除了使用不同的技术,我知道没有办法改变这种行为。

我确认其他基于 Gecko 的浏览器也存在该问题(特别是 Camino 和 Flock)。我无法在基于 WebKit 的浏览器(Chrome 和 Safari)中复制它。

【讨论】:

【参考方案3】:

这里是可以看到代码的页面->http://antoniocs.org/iframe/index_.html

调整 iframe 大小的代码在 3 秒后运行,您可以看到 swf(如果已扩展)以初始(未扩展)形式出现。

要扩展 swf,只需将鼠标悬停在其上即可。

在ie中iframe没有刷新。

【讨论】:

【参考方案4】:

没有onresize代码。

很简单!我有一个宽度为 300 和高度为 250 的 iframe,当我将它们更改为 500 和 400 时,Firefox 会刷新内容,我想防止这种情况发生。

【讨论】:

define "refresh" - 如果你调整任何给定浏览器的大小,任何给定的浏览器都会重新绘制它,并且 afaik 没有办法阻止它(你为什么会这样?)但如果你说 FF 字面上刷新,即重新请求内容,可能有问题 确实如此。它不应该刷新,也不在我的测试用例中。需要演示问题的示例代码。

以上是关于调整 iframe 大小时,如何防止 swf 刷新?的主要内容,如果未能解决你的问题,请参考以下文章

Power Query,刷新时保持输出表相同大小

如何防止 iframe 在 DOM 中移动时重新加载

使用 SWFObject 加载 SWF 时调整其大小

完成所有 jquery ajax 请求后如何调整 iframe 的大小

调整浏览器窗口大小时如何停止页面刷新(跳转)?

iframe 调整大小在 Mozilla Firefox 中的第二次加载期间不起作用