У меня возникают проблемы с событиями window.onload и document.onload. Все, что я прочитал, говорит мне, что они не будут запускаться, пока DOM не будет полностью загружен всеми его ресурсами. Мне кажется, что это не происходит для меня:window.onload запускается до загрузки DOM (JavaScript)
Я пробовал следующую простую страницу в Chrome 4.1.249.1036 (41514) и IE 8.0.7600.16385 с тем же результатом: оба отображали сообщение «Не удалось!», Указывая, что myParagraph не загружен (и поэтому DOM кажется неполным).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript">
window.onload = doThis();
// document.onload gives the same result
function doThis() {
if (document.getElementById("myParagraph")) {
alert("It worked!");
} else {
alert("It failed!");
}
}
</script>
</head>
<body>
<p id="myParagraph">Nothing is here.</p>
</body>
</html>
Я с использованием более сложных сценариев, чем это, во внешнем .js файле, но это иллюстрирует проблему. Я могу заставить его работать, если window.onload установил таймер на полсекунды, чтобы запустить doThis(), но это похоже на неэлегантное решение и не отвечает на вопрос о том, почему window.onload не работает, что все говорят, что это так. Другим решением было бы установить таймер, который будет проверять, загружен ли DOM, и если он не будет называться сам через полсекунды (так что он будет продолжать проверять до загрузки DOM), но это кажется слишком сложным для меня. Есть ли более подходящее событие для использования?
Первая ошибка, которую я вижу, что вы Ассинг [результат функции] вместо [функции] сама по себе.Вы можете видеть, что 'doThis()' - это оператор, который возвращает значение undefined после оценки, потому что 'doThis' не имеет оператора' return'. 'window.onload = doThis;' выполнит эту работу. Обратите внимание, что нет скобок – Dan
@DavidMason W3Schools - плохой источник информации. Они никак не связаны с W3C. * Не * относитесь к w3schools как к авторитетному источнику информации, относитесь к ним так, как они заслуживают того, чтобы их рассматривали: неприятные ссылки, которые вам нужно пропустить, когда вы ищете настоящий справочный сайт. – doug65536
@ doug65536 Сегодня я полностью согласен. Я рекомендую w3fools.com для всех, кто не уверен. Я склонен идти прямо на developer.mozilla.org для получения высококачественной информации в эти дни, а затем выполнить более подробный поиск, если я не найду то, что я там ищу (что обычно, когда я пытаюсь сделать что-то смешное). Я довольно смущен тем, что прошлое, я опубликовал это ... но я могу удалить его! Там, одна наивная ссылка на w3schools в Интернете :) Спасибо, что заметили. –