我怎么能挂钩到浏览器窗口调整大小事件?

jQuery有一种监听调整大小事件的方法,但我不希望仅仅为了这一需求而将其引入我的项目中。


当前回答

window.onresize = function() {
    // your code
};

其他回答

<script language="javascript">
    window.onresize = function() {
    document.getElementById('ctl00_ContentPlaceHolder1_Accordion1').style.height = '100%';
} 

</script>

您可以使用以下方法,这是好的小项目

<body onresize="yourHandler(event)">

函数yourHandler(e) { console.log(大小:,e.target.innerWidth) } <身体onresize = " yourHandler(事件)" > 内容……(调整浏览器大小查看) < /身体>

2018年解决方案+:

您应该使用ResizeObserver。这是一种浏览器原生解决方案,比使用resize事件具有更好的性能。此外,它不仅支持文档上的事件,还支持任意元素上的事件。

var ro = new ResizeObserver(entries => { For (let entry of entries) { const cr = entry.contentRect; console.log(元素:,entry.target); console.log('元素大小:${cr. log。宽度}px x ${cr.height}px '); console.log('元素填充:${cr. log。顶级}px;$ {cr.left} px”); } }); //观察一个或多个元素 ro.observe (someElement);

目前Firefox、Chrome、Safari和Edge支持。对于其他(和旧的)浏览器,您必须使用polyfill。

上面已经提到的解决方案将工作,如果你想做的只是调整窗口的大小。但是,如果希望将调整大小传播到子元素,则需要自己传播事件。下面是一些示例代码:

window.addEventListener("resize", function () {
  var recResizeElement = function (root) {
    Array.prototype.forEach.call(root.childNodes, function (el) {

      var resizeEvent = document.createEvent("HTMLEvents");
      resizeEvent.initEvent("resize", false, true);
      var propagate = el.dispatchEvent(resizeEvent);

      if (propagate)
        recResizeElement(el);
    });
  };
  recResizeElement(document.body);
});

注意,子元素可以调用

 event.preventDefault();

作为resize事件的第一个参数传入的事件对象。例如:

var child1 = document.getElementById("child1");
child1.addEventListener("resize", function (event) {
  ...
  event.preventDefault();
});

首先,我知道addEventListener方法已经在上面的评论中提到过,但我没有看到任何代码。因为这是首选的方法,下面是:

window.addEventListener('resize', function(event){
  // do stuff here
});

这是一个工作样本。