我怎么能挂钩到浏览器窗口调整大小事件?
jQuery有一种监听调整大小事件的方法,但我不希望仅仅为了这一需求而将其引入我的项目中。
我怎么能挂钩到浏览器窗口调整大小事件?
jQuery有一种监听调整大小事件的方法,但我不希望仅仅为了这一需求而将其引入我的项目中。
当前回答
调整大小事件永远不应该直接使用,因为它在我们调整大小时不断被触发。
使用debounce函数来减少多余的调用。
窗口。addEventListener(“resizz”,debounce(handler, delay,即时性),假的);
这是一个常见的反弹漂浮在网上,尽管要寻找更先进的功能在lodash。
const debounce = (func, wait, immediate) => {
var timeout;
return () => {
const context = this, args = arguments;
const later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
const callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
这个可以这样使用……
window.addEventListener('resize', debounce(() => console.log('hello'),
200, false), false);
它不会每200毫秒发射一次以上。
移动方向变化使用:
window.addEventListener('orientationchange', () => console.log('hello'), false);
这是一个小的图书馆,我把它整理在一起。
其他回答
最佳实践是添加到resize事件,而不是替换它:
window.addEventListener('resize', function(event) {
...
}, true);
另一种方法是为DOM事件创建一个单独的处理程序(但只能有一个),例如。
window.onresize = function(event) {
...
};
jQuery可能会做一些工作来确保resize事件在所有浏览器中始终如一地触发,但我不确定是否每个浏览器都不同,但我鼓励您在Firefox、Safari和IE中进行测试。
您可以使用以下方法,这是好的小项目
<body onresize="yourHandler(event)">
函数yourHandler(e) { console.log(大小:,e.target.innerWidth) } <身体onresize = " yourHandler(事件)" > 内容……(调整浏览器大小查看) < /身体>
下面的博文可能对你有用:修复IE中的窗口大小调整事件
它提供了以下代码:
Sys.Application.add_load(function(sender, args) { $addHandler(窗口,“调整大小”,window_resize); }); var resizeTimeoutId; 函数 window_resize(e) { window.clearTimeout(resizeTimeoutId); resizeTimeoutId = window.setTimeout('doResizeCode();', 10); }
首先,我知道addEventListener方法已经在上面的评论中提到过,但我没有看到任何代码。因为这是首选的方法,下面是:
window.addEventListener('resize', function(event){
// do stuff here
});
这是一个工作样本。
<script language="javascript">
window.onresize = function() {
document.getElementById('ctl00_ContentPlaceHolder1_Accordion1').style.height = '100%';
}
</script>