如何在浏览器调整大小时刷新屏幕?

时间:2011-04-29 19:58:31

标签: javascript jquery css

是否可以刷新浏览器大小更改页面?我使用一些在页面上创建区域的样式,如果浏览器按比例缩小布局中断。

也许我可以用jQuery检测文档大小的变化?

9 个答案:

答案 0 :(得分:24)

立即查看此内容的任何人的更新。 JQuery现在认为绑定一个已弃用的函数。

而且proximus的响应方式(至少在Opera / Chrome / Firefox中)它会不断调查大小,即使浏览器只是坐在那里。看来resize函数在命中location.reload()时会自动调用,导致它达到无限循环。这就是我在一起解决问题的方法。

jQuery(function($){
  var windowWidth = $(window).width();
  var windowHeight = $(window).height();

  $(window).resize(function() {
    if(windowWidth != $(window).width() || windowHeight != $(window).height()) {
      location.reload();
      return;
    }
  });
});

答案 1 :(得分:17)

这是一个纯粹的JS解决方案,因为我认为将jQuery用于所有内容是不公平的。

window.addEventListener('resize', function () { 
    "use strict";
    window.location.reload(); 
});

缺点是它不能在早于9的IE“浏览器”中工作。

答案 2 :(得分:4)

如果您正在寻找jQuery解决方案,可以使用以下内容:

$(window).bind('resize', function() {
     location.reload();
});

可能另外使用超时......

答案 3 :(得分:1)

$(window).resize( function() {

window.location.href = window.location.href;

});

这个对我有用!

答案 4 :(得分:1)

简单。这并不是每x秒发生一次事件就会触发多个事件。接受的答案会引发太多事件

window.addEventListener('resize'

for jQuery将 $(window).resize 替换为 {{1}}

答案 5 :(得分:1)

已经提到的解决方案适用于大多数情况。当用户开始滚动时,移动设备(如平板电脑或手机)上的 Safari 会稍微改变分辨率。这会导致页面无法使用,因为当用户开始滚动时站点会刷新。 为避免这种情况,请在 threshold 中设置 px。如果浏览器在此 threshold 上方调整大小,页面将重新加载。 jQuery 解决方案可能如下所示:

var w = $(window).width();
var h = $(window).height();
var threshold = 100
$(window).resize(function(){
    widthDiff = Math.abs($(window).width()-w);
    heightDiff = Math.abs($(window).height()-h);
    if (widthDiff < threshold && heightDiff < threshold) return;
    w = $(window).width();
    h = $(window).height();

    $(window).resize(function(){
        location.reload();
    });
});

答案 6 :(得分:0)

答案 7 :(得分:0)

只需使用此代码

$(window).resize( function() {

window.location.href = window.location.href;

});

希望它有用

答案 8 :(得分:0)

如果有人拖动窗口来调整大小,则会出现问题 - 调整大小事件太多。

最好使用计时器来清理它:

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

    if (timeoutId) {
        clearTimeout(timeoutId);
    }

    timeoutId = setTimeout(function () {
        location.reload();
    }, 500);
});