Альтернатива <body onload = "init();" >

Я пытаюсь исправить старый script, написанный для меня. Мне нужно, чтобы он работал без <body onload="init ();">. Я хотел бы запустить функцию из script без встроенного кода, подобного этой команде. Извините, я не эксперт JS, но как это сделать?

Ответы

Ответ 1

<script type="text/javascript">
    function init() {
        // Put your code here
    }
    window.onload = init;
</script>

Или, если вы используете jQuery:

$(function() {
    // Your code here
});

Ответ 2

В чистой реализации 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();
 });

Ответ 3

Здесь небольшое отклонение от ответа Tejs. Я часто считаю его более читаемым и управляемым, чтобы отделить функцию init() от кода, регистрирующего обработчик событий:

function init(e) {

    //statements...

}

document.addEventListener('DOMContentLoaded', init, false);

Кроме того, вместо явной функции init() я иногда использовал самоисполняющуюся анонимную функцию, расположенную в самой нижней части страницы, перед тегом </body>:

(function() {

    //statements...

})();

Ответ 4

Лучший вариант - просто поместить вызов в 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', ...).

Ответ 5

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