在IE浏览器中resize事件执行多次的解决方法
发布日期:2021-06-29 05:05:51
浏览次数:2
分类:技术文章
本文共 2791 字,大约阅读时间需要 9 分钟。
这是个让人每次改变页面窗口的大小时很郁闷的方法,尤其在IE浏览器中,稍微动下窗口边框,就会触发很多次事件。更让人蛋疼的是在resize事件中包含某些页面内容处理或计算导致resize事件再次被触发的时候,IE会随机陷入假死状态。 网上找了好久,都是千律一篇的,到处都是转载的一个方法;以下是网上找到的一个解决方法: 代码如下:
var resizeTimer = null; $(window).resize(function() { if (resizeTimer) clearTimeout(resizeTimer); resizeTimer = setTimeout("changeHeight()", 500); });//resize事件延迟500毫秒执行
这个方法虽然可以解决多次执行事件问题,但是不完美,最后我找到了一个jquery插件形式的解决方案;
代码如下: /* =============================================================================== WResize is the jQuery plugin for fixing the IE window resize bug ............................................................................... Copyright 2007 / Andrea Ercolino ------------------------------------------------------------------------------- LICENSE: WEBSITE: =============================================================================== */ ( function( $ ) { $.fn.wresize = function( f ) { version = '1.1'; wresize = {fired: false, width: 0}; function resizeOnce() { if ( $.browser.msie ) { if ( ! wresize.fired ) { wresize.fired = true; } else { var version = parseInt( $.browser.version, 10 ); wresize.fired = false; if ( version < 7 ) { return false; } else if ( version == 7 ) { //a vertical resize is fired once, an horizontal resize twice var width = $( window ).width(); if ( width != wresize.width ) { wresize.width = width; return false; } } } } return true; } function handleWResize( e ) { if ( resizeOnce() ) { return f.apply(this, [e]); } } this.each( function() { if ( this == window ) { $( this ).resize( handleWResize ); } else { $( this ).resize( f ); } } ); return this; }; } ) ( jQuery );你可以把上面的代码另存为jquery.wresize.js导入网页,把以下代码拷贝到记事本中,另存为网页,然后测试一下。示例:
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""> <html xmlns="" style="overflow:hidden;"> <head> <title> test window resize </title> <script type="text/javascript" src="> <script type="text/javascript" src="jquery.wresize.js"></script> <script type="text/javascript"> jQuery( function( $ ) { function content_resize() { var w = $( window ); var H = w.height(); var W = w.width(); $( '#content' ).css( {width: W-20, height: H-20} ); } $( window ).wresize( content_resize ); content_resize(); } ); </script> </head> <body> <div id="content" style="border: 1px dashed silver; position:absolute; overflow:auto;"> test test testtest test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test </div> </body> </html>转载地址:https://blog.csdn.net/zhaokuner/article/details/9733905 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月14日 07时26分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
怎样给excel添加一行数据
2019-04-29
怎样彻底帮妹子解决weditor的安装的问题
2019-04-29
干货|一次完整的性能测试,测试人员需要做什么?
2019-04-29
全栈性能测试修炼宝典
2019-04-29
jmeter-性能测试9-测试执行
2019-04-29
沟通交流碎碎念
2019-04-29
电信集成笔试题
2019-04-29
jmeter-性能测试8-性能测试基本过程及示例
2019-04-29
1.vue起步
2019-04-29
3.vue条件语句
2019-04-29
10.vue实战--form表单属性绑定
2019-04-29
11.vue实战--form表单字段验证提交验证
2019-04-29
12.vue实战--接口请求,组件使用,页面跳转配置
2019-04-29
打破职能之缺陷预防之路
2019-04-29
mac开启mysql,重置mysql密码,允许远程连接
2019-04-29
安装kibana
2019-04-29
linux安装nodejs
2019-04-29
tomcat部署vue,spring项目
2019-04-29
idea2020打包war包
2019-04-29
测试框架
2019-04-29