Окно событий 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 создает конфликт
для меня window.onload
не работал, когда писал внутри script type="text/javascript
тег.
вместо этого, необходимо написать то же самое в script language="Javascript" type="text/javascript
tag и он работал нормально.
Если это действительно в таком порядке, это определенно не сработает. Нельзя назначить функцию обработчику событий до объявления самой функции.