2009-12-07 4 views
27

У меня проблемы с моей компоновкой, когда я вручную изменяю размер окна и восстанавливаю его, чтобы все было в идеальном месте.Принудительное изменение размера окна

Можно ли обмануть браузер и сделать что-то с помощью JavaScript, что на самом деле заставит браузер подумать, что страница была изменена так, чтобы мой макет выглядел так, как должен?

UPDATE:

Могу ли я изменить размер и восстановить окно таким образом, что пользователь едва замечает?

+0

Если ваш макет разбит и исправлен после изменения размера, вы должны исправить макет. Что это за браузер? Можете ли вы опубликовать ссылку на живой пример? –

+0

К сожалению, на локальном хосте у меня его нет в сети, дело в том, что оно исправлено после изменения размера, как вы говорите. –

+0

Думаю, вам стоит по-настоящему изучить, как исправить макет. Работа вокруг этого с использованием Javascript шаткая. –

ответ

0

Это возможно с Mootools (что означает, что может быть сделано без рамки, а), вот пример:

window.addEvent('domready', function() { 
window.addEvent('resize', function() { 
    alert('f'); 
}); 
(function() { 
    window.fireEvent('resize'); 
}).delay(3000); 
}); 

Через 3 секунды после загрузки DOM-структуры событие resize будет запущено для окна-объекта.

Редактировать;

Я понятия не имею, как 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!"); 
} 
+0

Спасибо, bjorn. Я в настоящее время решение для Google для обычного javascrpt. –

+0

Пока нет, как можно поменять размер/восстановить действительно быстро? –

+0

Извините, Björn У меня были другие проекты, над которыми нужно поработать .. Я думаю, что он работает. Я сейчас приму свой ответ (у меня не было времени проверить его). спасибо –

-2

переключить атрибут отображения в областях, которые необходимо перерисовать. например:

var toDraw = document.getElementById('redrawme'); 
toDraw.style.display = none; 
toDraw.style.display = ''; 

Я не знаю whqt результат будет, если вы пытались сделать, прежде чем весь элемент тела, как Ive никогда не уставал его.

Что вы делаете для того, чтобы заставить перерисовать?

+0

Хм, проблема в том, что я оставил боковую панель и центральный div, onclick, я сделал это так, чтобы центральный div взял свое пространство + левое боковое пространство, после этого потребуется изменить размер, чтобы исправить вещи до нормального –

+0

как ваши столбцы закладываются вне? вероятно, ваш макет, который исправлен, как было предложено выше. лично id float они оба оставили в стороне обертку с clearfix на нем и изменяют оттуда. Поскольку они оба находятся в потоке документов, которые должны исправить проблемы, о которых я думаю. – prodigitalson

+0

они плавают слева .. что вы подразумеваете под понятием clearfix –

8

Вы можете изменить размер окна, как это ...

window.resizeTo(width, height); 

И если вам нужно вызвать обработчик события, вы можете сделать это, как это ...

window.onresize(); 
+0

hmm Можно ли вручную запустить событие onresize при запуске моего мероприятия? –

+2

Как и в моем ответе: 'window.onresize();' –

+2

Это должен быть принятый ответ. – Jonah

4

Вы можете использовать метод JQuery resize(), как это:

$(window).resize(); 
+0

Не работает или, по крайней мере, он не влияет. Возможно, в некоторых условиях это происходит. – AndroidDev

Смежные вопросы