Принудительное изменение размеров окон
У меня проблемы с моим макетом, когда я вручную меняю размер окна и восстанавливаю его в нормальном состоянии, все в идеальном месте.
Можно ли обмануть браузер и сделать что-то с помощью JavaScript, который фактически заставил бы браузера подумать, что страница была изменена, чтобы мой макет выглядел так, как должен?
ОБНОВЛЕНИЕ:
Можно ли изменить размер и восстановить окно, чтобы пользователь не заметил?
Ответы
Ответ 1
Это возможно с Mootools (это означает, что это можно сделать и без рамки), вот пример:
window.addEvent('domready', function() {
window.addEvent('resize', function() {
alert('f');
});
(function() {
window.fireEvent('resize');
}).delay(3000);
});
Через 3 секунды после загрузки DOM-структуры событие resize будет запущено для окна-объекта.
Edit
Я понятия не имею, как Mootools решает их fireEvent для события изменения размера. Я попробовал Google, но нашел нада. Вы можете, конечно, изменить размер окна вручную, но это действительно взломать:
function fireOnResizeEvent() {
var width, height;
if (navigator.appName.indexOf("Microsoft") != -1) {
width = document.body.offsetWidth;
height = document.body.offsetHeight;
} else {
width = window.outerWidth;
height = window.outerHeight;
}
window.resizeTo(width - 1, height);
window.resizeTo(width + 1, height);
}
window.onresize = function() {
alert("Resized!");
}
Ответ 2
С тех пор лучшее решение было опубликовано в fooobar.com/questions/16515/...:
window.dispatchEvent(new Event('resize'));
Ответ 3
Вы можете изменить размер окна таким образом...
window.resizeTo(width, height);
И если вам нужно вызвать обработчик событий, вы можете сделать это вот так:
window.onresize();
Ответ 4
Вы можете использовать метод jQuery resize()
, например:
$(window).resize();
Ответ 5
переключить атрибут отображения в областях, которые необходимо перерисовать. например:
var toDraw = document.getElementById('redrawme');
toDraw.style.display = none;
toDraw.style.display = '';
Я не знаю, whqt результат будет, если вы попытаетесь сделать весь элемент тела, поскольку ive никогда не уставал от него.
Что вы делаете, что вам нужно заставить перерисовать?