Окно событий JavaScript.события onload не срабатывает

у меня есть следующий код в веб-сайт:

 window.onload = resize;
 window.onresize = resize;

 function resize(){
  heightWithoutHeader = (window.innerHeight - 85) + "px"; 
  document.getElementById("main-table").style.height = heightWithoutHeader;
  document.getElementById("navigation").style.height = heightWithoutHeader;
 }

на onresize и onload событие никогда не срабатывает. Я попробовал его в Firefox и Chrome, и ни один из них не работает.

Спасибо за вашу помощь и пойти на репутации! ; D

7 ответов


Я думаю, что, вероятно, здесь происходит то, что ваш window.onload переопределяется позже, проверьте, чтобы убедиться, что это не через такие вещи, как <body onload="">

вы можете проверить это путем alert(window.onload) в вашей функции re-size, чтобы увидеть, что на самом деле прикреплено там.


У меня это произошло, когда я добавил сторонний код jQuery, который нам нужен для партнера. Я мог бы легко переделать свое старомодное окно.onload к документу jQuery готов. Тем не менее, я хотел знать, есть ли современное решение, совместимое с кросс-браузером.

там!

window.addEventListener ? 
window.addEventListener("load",yourFunction,false) : 
window.attachEvent && window.attachEvent("onload",yourFunction);

знайте, что я знаю это, я могу преобразовать свой код для использования маршрута jQuery. И я попрошу нашего партнера переработать их код, чтобы они перестали влиять на сайты.

источник где я нашел исправление --> http://ckon.wordpress.com/2008/07/25/stop-using-windowonload-in-javascript/


переместить окно.загрузите строку в конец файла javascript или после начальной функции, и она будет работать:

function resize(){
    heightWithoutHeader = (window.innerHeight - 85) + "px"; 
    document.getElementById("main-table").style.height = heightWithoutHeader;
    document.getElementById("navigation").style.height = heightWithoutHeader;
}
// ...
// at the end of the file...
window.onload = resize;
window.onresize = resize;

но это лучшая практика, если вы не замените onload тоже. Вместо этого прикрепите свою функцию к событию onload:

function resize(){
    heightWithoutHeader = (window.innerHeight - 85) + "px"; 
    document.getElementById("main-table").style.height = heightWithoutHeader;
    document.getElementById("navigation").style.height = heightWithoutHeader;
}
// ...
// at the end of the file...
window.addEventListener ? 
    window.addEventListener("load",resize,false) 
    : 
    window.attachEvent && window.attachEvent("onload",resize);

что работал для меня, и извините за мой английский.


это работает для меня, я думаю, что ваша проблема в другом месте:

 function resize(){
  var tester = document.getElementById("tester"),
      html = tester.innerHTML

  tester.innerHTML = html + "resize <br />"
 }  

window.onload = resize;
window.onresize = resize;

вы можете проверить это самостоятельно здесь: http://jsfiddle.net/Dzpeg/2/

вы уверены, что это единственное событие, называемое onLoad ? Возможно, другое событие onLoad создает конфликт


Это будет работать при вызове окна".onload " рядом с функцией resize()


для меня window.onload не работал, когда писал внутри script type="text/javascript тег.

вместо этого, необходимо написать то же самое в script language="Javascript" type="text/javascript tag и он работал нормально.


Если это действительно в таком порядке, это определенно не сработает. Нельзя назначить функцию обработчику событий до объявления самой функции.