传递一定宽度时重新加载页面

时间:2012-05-14 00:38:33

标签: javascript jquery browser window width

我希望只有在浏览器窗口高于或低于768px时才重新加载页面。 这是我失败的尝试。

if ($(window.width() > "769") {
    $(window).resize(function () {
        if ($(window).width() < "769") {
            location.reload();
        }
    });

}
elseif($(window.width() < "769") {

    $(window).resize(function () {
        if ($(window).width() > "769") {
            location.reload();
        }
    });

}

我确实这是一个非常简单的方法。

2 个答案:

答案 0 :(得分:5)

demo jsFiddle

重新加载页面的证据是(选项卡中的等待图标:D)生成随机数的Math随机数(在演示中)。

var ww = $(window).width();
var limit = 769;

function refresh() {
   ww = $(window).width();
   var w =  ww<limit ? (location.reload(true)) :  ( ww>limit ? (location.reload(true)) : ww=limit );
}

var tOut;
$(window).resize(function() {
    var resW = $(window).width();
    clearTimeout(tOut);
    if ( (ww>limit && resW<limit) || (ww<limit && resW>limit) ) {        
        tOut = setTimeout(refresh, 100);
    }
});

超时功能有助于窗口调整大小等待100ms,然后再调用refresh函数 您可以增加超时值以提高可用性。

答案 1 :(得分:3)

可能有其他更好的方式来做你真正需要的事情,但是:

if ($(window.width() > "769"){

应该是:

if ($(window).width() > 769){

完整代码:

var width = $(window).width();
$(window).resize(function() {
    if (width > 769 && $(window).width() < 769) {
        location.reload();
    }
    else if (width < 769 && $(window).width() > 769) {
        location.reload();
    }
});​

Live DEMO

可以使用一个if语句来创建,但我更喜欢将其拆分为两个,因此更容易理解。