【问题标题】:Why resize event doesn't fire when scrollbar appears or disappears?为什么滚动条出现或消失时不会触发调整大小事件?
【发布时间】:2013-01-15 18:43:34
【问题描述】:

当浏览器的垂直滚动条出现或消失时,视口或浏览器窗口的宽度会发生变化(可以使用jQuery的$(window).width()方法测试),但不会触发窗口的resize事件。怎么会?

【问题讨论】:

    标签: javascript browser


    【解决方案1】:

    Re-size 是一个由实际浏览器窗口改变大小驱动的事件。

    如果我从页面中删除元素直到我的内容适合屏幕会怎样?这不是重新调整窗口大小。或者,如果我将页面的溢出更改为隐藏。滚动条将消失,但这又不是重新调整大小。

    我的意思是:滚动条可见性并不一定意味着有一个调整大小的事件。

    【讨论】:

    • 如果不是窗口调整大小,那么为什么jQuery会为窗口返回不同的宽度?
    【解决方案2】:

    浏览器不会将其识别为调整大小。那么如果你需要“滚动条出现”和“滚动条消失”事件,使用这个代码:

    <div id="footerDiv" style="float: left; height: 1px; width: 100%;"></div>
    
    
    
    bodywidth = 0;
    
    $(document).ready(function () {
    
        bodywidth = $("#footerDiv").width();
        setInterval(scrollbarHelper, 100);
    
    });
    
    function scrollbarHelper() { 
    
        var newwidth = $("#footerDiv").width();
    
        if (bodywidth !== newwidth) {
    
            if (bodywidth > newwidth) {
                alert("Scrollbar Appeared");
                // Your code here
            }
            else if (bodywidth < newwidth) {
                alert("Scrollbar Disppeared");
                // Your code here
            }
    
            bodywidth = newwidth;
        }
    }
    

    【讨论】:

      【解决方案3】:

      使用overflowchanged事件代替调整大小。

      【讨论】:

      • overflowchanged 已弃用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      相关资源
      最近更新 更多