5

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

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();
        }
    });

}

我确定有一种非常简单的方法可以做到这一点。

4

2 回答 2

7

演示 jsFiddle

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

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);
    }
});

超时函数将有助于窗口调整大小以在调用refresh函数之前等待 100 毫秒。
您可以增加超时值以提高可用性。

于 2012-05-14T01:14:19.750 回答
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();
    }
});​

现场演示

它可以用一个 if 语句来实现,但我更喜欢将它分成两部分,这样更容易理解。

于 2012-05-14T00:42:14.523 回答