JavaScript 如何监控 window 大小变化?

linjunhalida · 2014年09月18日 · 最后由 linjunhalida 回复于 2014年09月26日 · 2762 次阅读

现在实现一个功能,页面嵌入一个 iframe,然后 iframe 的大小要根据里面内容的大小动态变化。里面内容是嵌入一个 redmine。 我实现的方法是用 postMessage,当里面页面刷新的时候,通知外层 window 自己高度变化了。

但是有一个问题,redmine 里面有 js 的操作,会改变页面大小。这个时候要调整 iframe 高度。里面操作基本上是用$(element).show()来做的,不排除有其它的方式。我首先考虑看看能否监控高度改变的事件,结果按照这里的方法查看所有触发的事件,但是没有发现任何和大小改变相关的。

我可以用其它的方式来解决,比如 hack jQuery.show,但是这个不是好办法,最好的办法是能够想办法监控到 window 改变大小的事件。请问大家有什么办法可以做到的?谢谢~

试试 resize ?

$(theFrame.contentWindow).resize();

#1 楼 @ichord 试过了,没有触发事件。。

window.onresize

#3 楼 @lerrybin +1,手游的时候九这么干的。

$(document).ready(function() {  
     var canvas = $("#myCanvas");
     var context = canvas.get(0).getContext("2d");
     $(window).resize(resizeCanvas);
     function resizeCanvas() {//浏览器窗口大小变化时,回调函数
       canvas.attr("width", $(window).get(0).innerWidth);
       canvas.attr("height", $(window).get(0).innerHeight);
       context.fillRect(0, 0, canvas.width(), canvas.height());
     };
     resizeCanvas();
});

最后找到解决方法了,用这个插件:

https://github.com/davidjbradshaw/iframe-resizer

需要 登录 后方可回复, 如果你还没有账号请 注册新账号