Ответ 1
<script type="text/javascript">
function init() {
// Put your code here
}
window.onload = init;
</script>
Или, если вы используете jQuery:
$(function() {
// Your code here
});
Я пытаюсь исправить старый script, написанный для меня. Мне нужно, чтобы он работал без <body onload="init ();">
. Я хотел бы запустить функцию из script без встроенного кода, подобного этой команде. Извините, я не эксперт JS, но как это сделать?
<script type="text/javascript">
function init() {
// Put your code here
}
window.onload = init;
</script>
Или, если вы используете jQuery:
$(function() {
// Your code here
});
В чистой реализации JavaScript вам нужно подождать, когда страница будет готова для вызова ваших событий. Самое простое решение выглядит так:
<script type="text/javascript" language="javascript">
window.onload = function()
{
init();
};
</script>
Но это не намного лучше, чем ваша первоначальная реализация, поместив это на сам тег. Что вы можете сделать, так это ждать определенного события:
document.addEventListener("DOMContentLoaded", function()
{
init();
}, false);
Это должно быть запущено немного раньше в цикле и должно делать красиво.
Кроме того, если вы используете jQuery, вы можете просто добавить функцию, которая будет выполняться, когда это событие запускается с использованием простого синтаксиса:
$(document).ready(function() // or $(function()
{
init();
});
Здесь небольшое отклонение от ответа Tejs. Я часто считаю его более читаемым и управляемым, чтобы отделить функцию init() от кода, регистрирующего обработчик событий:
function init(e) {
//statements...
}
document.addEventListener('DOMContentLoaded', init, false);
Кроме того, вместо явной функции init() я иногда использовал самоисполняющуюся анонимную функцию, расположенную в самой нижней части страницы, перед тегом </body>
:
(function() {
//statements...
})();
Лучший вариант - просто поместить вызов в init()
в нижней части страницы:
<html>
<head>
...
</head>
<body>
.... page content here ...
<script type="text/javascript">init();</script>
</body>
</html>
Поместив его внизу, вы будете уверены, что он работает как очень многое на последней странице на странице. Однако обратите внимание, что это не так надежно, как использование опции onload в теге body, или jquery $('document').ready()
или mootool window.addEvent('domready', ...)
.
<script type="text/javascript">
function init() {
// Put your code here
}
window.onload = init;
</script>
это не работа, следует использовать этот
<script type="text/javascript">
function init() {
// Put your code here
}
window.onload = init();
</script>