Подтвердить что ты не робот

Невозможно запустить событие JavaScript window.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

4b9b3361

Ответ 1

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

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

Ответ 2

Это произошло, когда я добавил сторонний jQuery-код, который нам нужен для партнера. Я мог бы легко конвертировать мой устаревший window.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/

Ответ 3

Переместите строку window.onload в конец файла 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:

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);

Это сработало для меня и жаль моего английского.

Ответ 4

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

 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 создает конфликт

Ответ 5

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

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

Ответ 6

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

Ответ 7

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