在Firefox、WebKit和Internet Explorer中插入窗口调整大小事件的正确(现代)方法是什么?

你能同时打开/关闭两个滚动条吗?


当前回答

很抱歉提出了一个旧线程,但如果有人不想使用jQuery,你可以使用这个:

function foo(){....};
window.onresize=foo;

其他回答

$(window).bind('resize', function () { 

    alert('resize');

});

我认为jQuery插件“jQuery resize event”是最好的解决方案,因为它负责调节事件,使它在所有浏览器上都能正常工作。这与Andrews的答案相似,但更好,因为你可以将resize事件与特定的元素/选择器以及整个窗口挂钩。它为编写干净的代码提供了新的可能性。

这个插件可以在这里找到

如果您添加了很多侦听器,则会出现性能问题,但对于大多数使用情况来说,这是完美的。

jQuery默认提供了$(window).resize()函数:

<script type="text/javascript">
// function for resize of div/span elements
var $window = $( window ),
    $rightPanelData = $( '.rightPanelData' )
    $leftPanelData = $( '.leftPanelData' );

//jQuery window resize call/event
$window.resize(function resizeScreen() {
    // console.log('window is resizing');

    // here I am resizing my div class height
    $rightPanelData.css( 'height', $window.height() - 166 );
    $leftPanelData.css ( 'height', $window.height() - 236 );
});
</script> 

很抱歉提出了一个旧线程,但如果有人不想使用jQuery,你可以使用这个:

function foo(){....};
window.onresize=foo;

我认为你应该进一步控制这个:

    var disableRes = false;
    var refreshWindow = function() {
        disableRes = false;
        location.reload();
    }
    var resizeTimer;
    if (disableRes == false) {
        jQuery(window).resize(function() {
            disableRes = true;
            clearTimeout(resizeTimer);
            resizeTimer = setTimeout(refreshWindow, 1000);
        });
    }