11

JQuery在ie下window.resize的麻烦

类别: WEB前台开发鼠标炸弹 @ 2009.08.11 09:19 已阅8,643次
标签: , , , ,

flash网站要实现大小控制,往往需要做一个flash跟着窗口尺寸自动放大缩小的功能。

我采用的方法是:
放一个容器div承载,里面放着100%宽高的flash
js监听网页窗口大小,然后重设容器div的大小
flash里监听舞台变化,相应视图改变位置等

用JQuery在监听窗口大小的环节出现状况。

代码:

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$(document).ready(function(){
    WSWFobj("100%", "100%", 'swf/SiteLoader.swf', ['allowScriptAccess'], ['always'], 'flashContainer', 'mainFlash');
    confSize();
});
$(window).resize(function(){
	alert('resize');
    confSize();
});
 
function confSize(){
    var w = $(window).width();
    var h = $(window).height();
    if (w < minW) 
        w = minW;
    if (h < minH) 
        h = minH;
    $("#wrap").width(w);
    $("#wrap").height(h);
}
 
var minW = 1004;
var minH = 650;
function setMinSize(w, h){
    minW = w;
    minH = h;
}

浏览器测试,发现IE会不断调用confSize()
原因是:
IE fires the window resize event multiple times (instead of once) per actual resize.
实际上每一次resize,IE总会发出多次window.resize事件,而不是一次。

现成解决方案:此JQuery插件解决此问题
http://plugins.jquery.com/project/wresize

This plugin tries to fix it by introducing a specific method, wresize, which you can use like this:
$( selector ).wresize( your_handler )

本文对您有用吗? 何不留下评论继续交流, 或者在您的博客上引用本文继续探讨.
您可以订阅读者对本文的回应或者订阅本博客以在您的阅读器中自动获取更新.

本文居然还有同伙!有兴趣不?

还没有任何评论,何不对本文发表一下看法?