IE下window.onresize 多次调用与死循环bug处理方法介绍
window.onresize 在IE浏览器下有多次被执行甚至死循环的bug,会导致浏览器卡死
// IE浏览器下将onresize事件放在div上
if(navigator.userAgent && navigator.userAgent.toLowerCase().indexOf("msie")>-1){
document.body.innerHTML = '<div onresize="resetClientWidth();lazyLoadImgesMethod();" style="width:100%;height:100%;position:absolute;z-index:-999;"></div>' + document.body.innerHTML;
} else {
window.onresize = function(){
resetClientWidth();
lazyLoadImgesMethod();
};
}
ps:FF浏览器不支持在div上写onresize事件,window.onresize 虽然在FF下不会死循环,但如果在函数里面有alert执行,FF浏览器也会卡死,很无奈的bug。
PS: navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie")>-1 这个判断ie的问题, 在chrome浏览器下会出现"toLowerCase()"方法未定义的错误.
所以修正为navigator.userAgent.toLowerCase().indexOf("msie")>-1
相关推荐
-
js动态添加onload、onresize、onscroll事件(另类方法)
window 的 onload.onresize.onscroll 事件,跟其他的事件不一样,它不能用 attachEvent 或 addEventListener 来添加. 也就是说,它只能这样来(以 onload 为例,下同): 复制代码 代码如下: window.onload = function() { // ... }; 但这有个问题,就是想再为 onload 增加新的事件处理程序时,不能直接为 window.onload 赋值了,否则前面的赋值就会被覆盖了. 可这样做: 复制代码 代
-
window.onresize 多次触发的解决方法
之前做一个扩展,需要在改变窗口大小的时候保证页面显示正常,于是用了 window.onresize 但是发现每次 onresize 后页面中状态总是不对,后来查找出来原来是 onresize 事件触发了多次找成的,于是网上搜集了下解决办法,整理一下. // 关于 onresize 事件触发次数,不同浏览器不同,safari, opera, firefox 都是一次(分别只用了一个版本测试,都是较新的); //ie6 在 quirk 下触发 2 次,标准下 3 次:ie7,8 在 quirk 和
-
利用onresize使得div可以随着屏幕大小而自适应的代码
当我们让div居中时候,一般有两种方法,一种是固定左右宽度,也就是使用像素绝对定位:另一种是用百分比来相对定位,在这种两种方式下,绝对定位是不能让div随着屏幕而自适应的,而用百分比就可以,但是,是用百分比就会有一个新的问题,如果我们的页面中有这么一句 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transit
-
浅谈javascript属性onresize
浅谈javascript属性onresize //获取屏幕宽度并动态赋值 var winWidth = 0; var winHeight = 0; function findDimensions() //函数:获取尺寸 { //获取窗口宽度 if (window.innerWidth) winWidth = window.innerWidth; else if ((document.body) && (document.body.clientWidth)) winWidth = docum
-
IE下window.onresize 多次调用与死循环bug处理方法介绍
window.onresize 在IE浏览器下有多次被执行甚至死循环的bug,会导致浏览器卡死 解决方案: 复制代码 代码如下: // IE浏览器下将onresize事件放在div上if(navigator.userAgent && navigator.userAgent.toLowerCase().indexOf("msie")>-1){ document.body.innerHTML = '<div onresize="resetClie
-
linux下使用perl获取本机ip的几种方法介绍
在使用 Gearman 做分布式处理时,各机需要注册一个独立的 job 作为信息反馈,为求方便,Gearman::Worker 脚本 register_function 代码又要通用,于是想到了使用各自的 ip 地址作为 job 命名. 那么怎么在 worker 脚本里获取本机 ip 作为 func 呢? 第一种办法,最简单的,调用 shell: 复制代码 代码如下: $ip = `ifconfig eth0|grep -oE '([0-9]{1,3}\.?){4}'|head -n 1`; 注
-
修复ie8&chrome下window的resize事件多次执行
复制代码 代码如下: /** * window.onresize 事件 专用事件绑定器 v0.1 Alucelx * http://www.cnblogs.com/Alucelx/archive/2011/10/20/2219263.html * <description> * 用于解决 lte ie8 & chrome 及其他可能会出现的 原生 window.resize 事件多次执行的 BUG. * </description> * <methods> *
-
vue中window.onresize的使用解析
目录 window.onresize的使用 说下重点 window.onresize笔记 1.浏览器尺寸变化响应事件 2.谷歌浏览器中 3.页面尺寸变更事件 window.onresize的使用 说下重点 window.onresize只能在一个组件中使用,如果多个组件调用则会出现覆盖情况,所以我的解决方案是在App.vue中使用,获取document.documentElement.clientWidth(即浏览器宽度)存放在vuex中,别的组件只需要用computed(计算属性)将vuex的
-
详谈symfony window下的安装 安装时候出现的问题以及解决方法
1. cmd进入DOS , cd 到 php.exe 的目录下 2. php -r "readfile('http://symfony.com/installer');" > symfony 3. 把symfony移动到projects(你自己的工作目录) move symfony c:\projects 4. c:\> cd projects/ c:\projects\> php symfony new my_project_name 如果正常就开始创建, 一
-
JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = 0, folderNum = 0; File file = new File(path); if (file.exists()) { LinkedList<File> list = new LinkedList<File>(); File[] files = file.listFile
-
vue在mounted中window.onresize不生效问题及解决
目录 mounted中window.onresize不生效 解决方案 window.onresize被覆盖问题 解决方案 mounted中window.onresize不生效 在vue开发中,因为引用的父组件和子组件都使用了window.onresize以至于一个window.onresize失效. 解决方案 可以采用下面的方式 window.onresize = () => this.screenWidth = window.innerWidth // 改为以下写法 window.addEv
-
不使用他人jar包情况下优雅的进行dubbo调用详解
目录 1.正常dubbo调用流程 2.如果想在不引用他人jar包的情况下如何调用呢? dubbo泛化调用-dubbo原生支持的优雅方法 使用场景: 如何使用: 实现原理: 3.总结 1.正常dubbo调用流程 引入dubbo依赖 引入他人提供的clinet依赖包; 配置相同的注册中心,使用@Reference注解注入对应的service接口(注意是Reference是dubbo包下的,不是spring那个) 2.如果想在不引用他人jar包的情况下如何调用呢? dubbo泛化调用-dubbo原生支
-
Ajax请求响应中用window.open打开新窗口被拦截的解决方法
一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截. 说明: 1.如果是在 <a href="javascri
随机推荐
- 使用Python的Twisted框架编写简单的网络客户端
- flex与js通信与彼此之间的互调整理(一)
- JavaScript结合PHP实现网页制作中双下拉菜单的动态实现
- 在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)
- 批处理命令 BAT备份MySQL数据库
- c语言连接mysql数据库的实现方法
- php使用百度ping服务代码实例
- Python3 socket同步通信简单示例
- Mysql如何巧妙的绕过未知字段名详解
- JavaScript实现url参数转成json形式
- 基于ASPJPEG 制作了一个梦寐已久的批量水印工具步骤
- sql 触发器使用例子
- 详解MyEclipse中搭建spring-boot+mybatis+freemarker框架
- jQuery属性选择器用法示例
- JavaScript的事件绑定(方便不支持js的时候)
- Android下的POS打印机调用的简单实现
- 使用PHP+JavaScript将HTML页面转换为图片的实例分享
- CentOS 7下安装Nginx服务器
- 详解Java的位操作符
- Android仿微信语音消息的录制和播放功能