Невозможно запустить событие 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
Ответы
Ответ 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
Если он действительно в таком порядке, он определенно не сработает. Вы не можете назначить функцию обработчику событий до того, как будет объявлена сама функция.