为什么在IE8的低变焦级别下,onresize不能显示呢?
Why does onresize fire when it shouldn't at low zoom levels in IE8?
我编写了一些jquery来调整元素的大小,并在浏览器窗口调整大小时关闭页面上所有打开的弹出窗口:
addEvent({
target: window,
eventListener: 'onresize',
func: function (e) {
resizeElements(); //This resizes loads of stuff
closeAllPopups(); //Closes any open popups
}
});
100%缩放效果很好。但是,在小于90%的缩放级别时,即使没有调整窗口大小,也会不断调用onresize。效果是弹出窗口不会打开-它们会立即关闭。
这似乎只发生在IE8上。
知道为什么会发生这种情况吗-这仅仅是一个IE8的bug吗?谁能提出一个修复或变通的建议?
如何检查窗口的原始大小和重新大小大小,然后尝试调用您的函数?
所以,即使你在90%的视图加载,这个窗口的大小将是原始的大小,只有当你调整大小(在90%的视图下),你的函数将被调用?
$(document).ready(function(){
var original_width = $(window).width();
var original_height = $(window).height();
$(window).resize(function() {
var resize_width = $(window).width();
var resize_height = $(window).height();
if(original_width != resize_width && original_height != resize_height){
alert('You resized!');
// resizeElements(); //This resizes loads of stuff
// closeAllPopups(); //Closes any open popups
}
});
});
你可以试着用一个定时器来破解它:
addEvent({
target: window,
eventListener: 'onresize',
func: function (e) {
clearTimeout(window.resizeTimeout);
window.resizeTimeout = setTimeout(function(){
resizeElements(); //This resizes loads of stuff
closeAllPopups(); //Closes any open popups
},50);
}
});
我在这里使用全局对象窗口来设置resizeTimeout变量,但更好的是使用一个局部变量
没有办法在浏览器本身"修复"这个错误,所以你只需要解决有一个不断触发的调整大小事件。所以烤是正确的使用时间,但你不是在寻找一个计时器。您需要存储时间,然后确保在事件再次触发之前已经经过了足够的时间,如下所示:
var _interval = 1000;// milliseconds
var _resize = 0;
addEvent({
target: window,
eventListener: 'onresize',
func: function (e) {
if (Date.now() - _resize < _interval)
return;
_resize = Date.now();
resizeElements(); //This resizes loads of stuff
closeAllPopups(); //Closes any open popups
}
});
相关文章:
- 不能从angular2中的子组件指定父组件中的数组
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 转义符不能与innerHTML一起使用
- JSON.parse没有'不能使用Javascript
- JS可以在Chrome中工作,但不能在Firefox中工作
- 砌体不能填补小缺口
- javascript扫雷器floodfill算法不能正常工作
- JavaScript指令不能像我想象的那样工作
- 为什么在这个网站上不能通过JS访问元素
- Facebook登录按钮没有'不能在Firefox上工作
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- AngularJS:$q.dedefe()不能由工厂方法共享
- 不能在同一页上进行多个jquery幻灯片切换
- 不能在图像中的地图标记中使用花式框jquery插件的区域标记
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- javascript没有´我不能在joomla 3.0中工作
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- 为什么在IE8的低变焦级别下,onresize不能显示呢?