调整 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 刷新?的主要内容,如果未能解决你的问题,请参考以下文章