Jump to content
  • 0

Ишак и изменения размеров окна...


maza
 Share

Question

Колдуны, поделитесь разумом!

Меня Майкрософт со своим супер-пупер браузером сводит с ума.

В общем мне надо тупо обновить страницу при окончательном изменении размеров окна.

вот так, не работает:

onresizeend = window.reload(true);

вот так работает, но не в ИЕ не так как надо:

onresize = window.reload(true);

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Мда? и чем это оно отличается от onresize = window.reload(true); , если указывает его в теге <script> ??

я ж говорил, что не работает.. у ИЕ onresize событие начинается с того момента, как только ты возьмешься за края, чтоб потянуть... это на сколько я знаю, а на практике, вот я сейчас пробовал, так вообще, у меня на onload есть функция, там считаются колонки (это не важно), короче в этой ф. есть алерт, так вот этот onresize какого-то черта зацикливает тот алерт вообще из другой функции, такое ощущение, что onresize тоже , что и onload! o_O

Link to comment
Share on other sites

  • 0

понял, в ч?м может быть проблема. у меня есть ф.sb в этой ф. у меня считаются колонки и выравниваются. так вот, эта функция вляет на изменение размеров, т.е. ИЕ его воспринимает как resize.

даже если при onresize вызывать ф.sb то вс?равно этот дебил-ИЕ6 будет считать постоянно эти колонки, т.к. как я писал выше для ИЕ6 onresize это когда мы беремся за границу браузера и тянем, то все миллиметры он воспринимает как событие onresize, другими словами, когда мы тянем окно идет постоянный посчет колонок, что приводит иногда к зависанию и само по себе не правильно. Есть правда событие onresizeend, но оно не работает! ;) Что делать?!

Шаманы, помогите советом, пожалуйста!

Link to comment
Share on other sites

  • 0
обучить ie правильному событию изменения размеров окна не удалось, зато нашел альтернативу, пошаманил и скрипт начал выполнять те задачи, которые нужно.

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

Link to comment
Share on other sites

  • 0

так это, все зависит от нюансов и задачи... никто даже не стал бы на форуме разбирать мою функцию, чего она делает и как быть с ресайзом.. Я-то изначально думал, что всем бедам положит конец перезагрузка страницы, но не тут-то было, в моем случае при загрузки страницы моя функция УЖЕ вызывала событие onresize.. Сначала я хотел обучить ИЕ правильному onresize'у, т.е. надо было выполнять перезагрузку уже после того, как окончательный размер окна будет известен. Но заглохло вс? это дело на том, что я не знал как передать переменную в другую область видимости :)

вот, код, если кому интересно:

/* открываем страницу... */
function Zagruzka()
{

/* сборка, подсчет колонок, выравниваие */
function Sborka()
{
var centerElement = document.getElementById('centerColumn').offsetHeight;
var leftElement = document.getElementById('leftColumn').offsetHeight;
var TopCenterElement = document.getElementById('centerColumn').offsetHeight + 160;
var TopLeftElement = document.getElementById('leftColumn').offsetHeight + 160;

if (document.getElementById('centerColumn').offsetHeight > document.getElementById('leftColumn').offsetHeight)
{
document.getElementById('leftColumn').style.height = centerElement + 'px';
document.getElementById('rightColumn').style.height = centerElement + 'px';
document.getElementById('left2Column').style.height = centerElement + 'px';
document.getElementById('right2Column').style.height = centerElement + 'px';
document.getElementById('obvCenter').style.marginTop = -TopCenterElement + 'px';

if(TopCenterElement > document.body.clientHeight)
{
document.getElementById('podvalnax').style.height = TopCenterElement - 5 + 'px';
} else {
var PlusToTable = document.body.clientHeight - TopCenterElement;
document.getElementById('podvalnax').style.height = TopCenterElement + PlusToTable - 5 + 'px';
}


} else {


document.getElementById('centerColumn').style.height = leftElement + 'px';
document.getElementById('rightColumn').style.height = leftElement + 'px';
document.getElementById('left2Column').style.height = leftElement + 'px';
document.getElementById('right2Column').style.height = leftElement + 'px';
document.getElementById('obvCenter').style.marginTop = -TopLeftElement + 'px';

if(TopCenterElement > document.body.clientHeight)
{
document.getElementById('podvalnax').style.height = TopCenterElement - 5 + 'px';
} else {
var PlusToTable = document.body.clientHeight - TopCenterElement;
document.getElementById('podvalnax').style.height = TopCenterElement + PlusToTable - 5 + 'px';
}

}
}
/* выполнение ф. выравнивания колонок */
Sborka();

/*——————————————————————*/

/* узнаем высоту окна браузера */
function visot() {
Visota = document.body.clientHeight;
}
visot();

/* высота после изменения окна браузера */
function otsl() {
NewVisota = document.body.clientHeight;
sravn();

} window.onresize = otsl;

/* сравнить высоту до и после */
function sravn() {

if(Visota != NewVisota) {
window.location.replace(window.location.href);
} else {
window.location.replace(window.location.href);
}

}
sravn();

/*——————————————————————*/

} window.onload = Zagruzka;

здесь стоит обратить внимание на функции visot();, которая узнает высоту видимой области в браузере и передает это значение в переменную Visota, otsl();, которая узнает окончательную(последнюю) высоту видимой области в браузере, при событии onresize, sravn();, которая сравнивает высоту ДО и ПОСЛЕ ресайза..

Таким вот образом я добился того, что у меня перезагрузка не зацикливалась, т.к. напомню свою проблему, у меня функция Sborka(); (сборка страницы) уже вызывала событие onresize..

НО, вс?равно меня не устраивало это решение. Теперь , когда я тянул размер окна, у меня обновлялась страница в этот момент постоянно. Хочется же чтобы оно обновляло после того как я отпустил кнопку мыши, границу..

Для этого необходимо было в скрипте в ф. otsl(); не вызывать ф. sravn();. А вызывал я е? там для того, чтобы в ф. sravn(); была видна переменная NewVisota. По-другому я не знал, как передать переменную... :)

————-

Я не программист, так что звиняйте, если где-то не совсем правильно выразился или что-то глупо как-то написал :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy