Как обновить страницу при изменении размера? - PullRequest
2 голосов
/ 02 декабря 2009

Существует ли скрипт для обновления браузера при изменении размера страницы? Точнее, тот, который эмулирует кнопку обновления браузера или F5? Я нашел два, но они не совсем делают то, что я ищу;

<script type="text/javascript">
var currheight = document.documentElement.clientHeight;
window.onresize = function(){
    if(currheight != document.documentElement.clientHeight) {
        location.replace(location.href);
    }    
}
</script>

и

<body onResize="window.location=window.location;">

Проблема с этими двумя заключается в том, что они, по-видимому, полностью сбрасывают страницу, поскольку при использовании функции обновления браузера некоторые пользовательские изменения остаются нетронутыми (например, при использовании определенного хеша), что мне и нужно.

Так есть ли способ обновить окно при изменении размера с помощью скрипта, похожего на то, если щелкнуть обновление браузера? Я не понимаю, почему есть разница, но она есть.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 12 июня 2013

Вот идеальное решение:

Я включил тайм-аут на 1 с, то есть браузер обновится через 1 с изменения размера окна

$(window).resize(function() {
    setTimeout( function(){
        window.location.href = window.location.href;
    },1000); 
});

Без тайм-аута

$(window).resize(function() {
    window.location.href = window.location.href;
});

ПРИМЕЧАНИЕ: Вы также можете использовать
window.location.reload() вместо window.location.href = window.location.href

window.location.reload() перезагрузит текущую страницу с данными POST,
, в то время как
window.location.href=window.location.href не включает данные POST

- надеюсь, это поможет

2 голосов
/ 02 декабря 2009

Да, вы, вероятно, хотите взглянуть на некоторые события JavaScript. Существует событие OnResize.

Вот ссылка для начала работы с событиями:
http://www.devarticles.com/c/a/JavaScript/OnReset-OnResize-and-Other-JavaScript-Events/

Что касается перезагрузки страницы, вы можете сделать это тоже:
http://www.mediacollege.com/internet/javascript/page/reload.html

Что касается сохранения пользовательских значений, вы можете сохранить их в сеансе.

1 голос
/ 30 сентября 2010

Попробуйте это:

<![if !IE]> <body onresize="document.location=window.location;"> <![endif]>
<!--[if IE]> <body onresize="window.location.reload();"> <![endif]-->
...