【问题标题】:Resizing iframe to fit contents when the web page has a resize event当网页有调整大小事件时调整 iframe 大小以适应内容
【发布时间】:2010-12-22 21:07:07
【问题描述】:

我有一个 iframe,用于托管来自各种网站的网页。在 iframe 的 onload 处理程序中,我使用 jQuery 调整它的大小以适应内容:

height = iframe.find('body').attr('scrollHeight') + 100

这适用于大多数网站。但是,有一个网站有一个 window.onresize 事件,它会重新加载页面。因此,它会陷入无限循环,重新加载调整大小的页面,从而重新加载页面。

如何终止调整大小事件?我在 onload 处理程序中尝试了以下所有方法,但似乎都没有:

$('#webpage').resize(function() { alert("resizing"); return false});    
iframe.resize(function() { alert("resizing"); return false});    
window.onresize=null    
window.onresize=function() { alert("resizing"); return false};

【问题讨论】:

  • 什么样的愚蠢网站会在调整大小时重新加载? :S
  • Heh@thirtydot -- 我注意到 chrome 调用 resize 当您更改标签时,我很确定我什至发现它重新渲染页面?
  • @thirtydot:为 Netscape 4 编写的一篇文章,令人难忘的是,当您调整窗口大小时,它完全搞砸了 CSS。 Reload-on-resize 是一种常见的解决方法,尽管它通常只在浏览器嗅探上完成,例如 if (document.layers)。
  • @simon:“来自不同的网站”?您无法读取来自不同站点的页面高度,而不是您自己的句号。这将是一个跨站点脚本漏洞。
  • 哦,是的,Netscape 时代对所有相关人员来说都是一个痛苦的世界。这些吐槽IE6的年轻人不知道自己搞得有多好! :-)

标签: javascript jquery iframe resize jquery-events


【解决方案1】:

除非有一些我根本不知道的疯狂解决方案,否则停止无限循环的最佳方法可能是计算您的iframe 的onload 处理程序被调用了多少次。如果超过1? 2? 3?次,然后不要调整它的大小。

【讨论】:

  • 谢谢。不是很喜欢这个,但你提示我在改变之前至少检查一下高度是否不同!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
相关资源
最近更新 更多