0

我可以同时使用 body onload 和 window.onload 吗?我已经使用此代码尝试过

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

但它没有用。我只需要有人向我确认。非常感谢

4

4 回答 4

2

你的问题的答案是“不”。但是有一些方法可以解决它。

将两个调用都添加到一个 onload 函数是理想的,但是如果您 /have/ 在添加一个 onload 处理程序之后添加一个处理程序,并且您没有使用有助于此操作的框架,您可以这样获得:

<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>
于 2012-02-09T15:00:20.167 回答
1

你可以(通过添加事件处理程序)但你不应该同时拥有

而是将调用添加到 window.onload:

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

<body>
</body>
于 2012-02-09T14:53:28.937 回答
1

不,document.body.onload实际上映射到window.onload. 你可以自己检查一下——当你有<body onload="a()">和 to时console.log(window.onload)a()会打印到控制台中。

您可以做的是拥有一个调用其他两个函数的 onload 事件处理程序。

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

或两个事件监听器

window.addEventListener('load', a, false);
window.addEventListener('load', b, false);
于 2012-02-09T15:00:42.513 回答
0

如果您要使用的一个或多个脚本在 BODY HTML 标记中具有事件处理程序,您仍然可以将其移至 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>

我想它可能对你有帮助。

于 2012-02-09T14:56:02.427 回答