загрузка тела и window.onload одновременно - PullRequest
0 голосов
/ 09 февраля 2012

Могу ли я использовать body onload и window.onload одновременно?Я пробовал использовать этот код

<body onload = "alertFirst()">
</body>
<script>
    window.onload = alertSec;
</script>

Но это не сработало.Мне просто нужен кто-то, чтобы подтвердить это мне.Большое спасибо

Ответы [ 4 ]

1 голос
/ 09 февраля 2012

Нет, document.body.onload фактически отображается на window.onload. Вы можете проверить себя - когда у вас есть <body onload="a()"> и console.log(window.onload), a() выводится на консоль.

Что вы можете сделать, так это иметь один обработчик события onload, который вызывает две другие функции.

window.onload = function () {
  a();
  b();
};

или два слушателя событий

window.addEventListener('load', a, false);
window.addEventListener('load', b, false);
1 голос
/ 09 февраля 2012

Ответ на ваш вопрос "нет". Однако есть способы обойти это.

Добавление обоих вызовов в одну функцию загрузки является идеальным, но если вы / имеете / добавляете обработчик загрузки после того, как он уже добавлен, и вы не используете инфраструктуру, которая облегчает это, вы можете обойтись так:

<html>
    <head>
        <script type="text/javascript">
            function alertFirst(){
                alert('First');
            }
            function alertSec(){
                alert('Second');
            }
        </script>
    </head>
    <body onload="alertFirst();">
        content
    </body>
    <script>
        var func = document.body.onload;
        window.onload=function(){
            func();
            alertSec();
        }
    </script>
</html>
1 голос
/ 09 февраля 2012

Вы можете (добавив обработчик (и) событий), но у вас НЕ должно быть обоих

Вместо этого добавьте вызов в window.onload:

<html>
<head>
<script>
  window.onload = function() {
    alertFirst();
    alertSec();
  }
</script>
</head>

<body>
</body>
0 голосов
/ 09 февраля 2012

Если один или несколько сценариев, которые вы хотите использовать, имеют обработчик события в HTML-теге BODY, вы все равно можете переместить его в код JavaScript.Смотрите пример ниже:

Скрипт № 1:

<script language="javascript">

function start(){
...code for script #1...
}

</script>

<body onload="start()">

Скрипт № 2:

<script language="javascript">

function init(){
...code for script #2...
}

window.onload=init;

</script>

Результат:

<script language="javascript">

function start(){
...code for script #1...
}

function init(){
...code for script #2...
}

window.onload=function(){
start();
init();
}

</script>

<body>

Я думаюэто может помочь вам.

...