在document.body上的onload事件表现得很奇怪

时间:2011-06-22 21:29:30

标签: javascript events dom onload

我正在使用firefox 4.0,当我在body元素上使用load事件时,它表现得很奇怪。我尝试了一些东西和一些工作,有些不。 第一个是这样的

<html>
<head>
<script type="text/javascript">
var load = function(){
alert("body loaded");      //alert not displayed
};
document.body.addEventListener("load",load,false);
</script>
</head>
<body >
</body>
</html>

现在这不起作用 现在我试过这个

     html>
    <head>
    <script type="text/javascript">
    var load = function(){
    alert("body loaded");      //alert displayed
    };
    </script>
    </head>
    <body onload="load()">
    </body>
    </html>
这是有效的 现在我试过这个

<html>
<head>
<script type="text/javascript">
var load = function(){
alert("body loaded");       //alert not displayed
};
document.body.onload=load;
</script>
</head>
<body >
</body>
</html>

这不起作用。 怎么了?

作为对Doug D的回应我试过这个

<html>
<head>
</head>
<body>
<script type="text/javascript">
var load = function(){
alert("body loaded");       //alert not displayed
};
document.body.onload=load;
</script>
</body>
</html>

这不起作用也不起作用

<html>
<head>
</head>
<body>
</body>
<script type="text/javascript">
var load = function(){
alert("body loaded");       //alert not displayed
};
document.body.onload=load;
</script>
</html>

在上一次尝试body has finished loading和第二次尝试中body is being loaded。但这仍然不起作用

1 个答案:

答案 0 :(得分:1)

在加载之前,无法在头部访问body。您使用onload属性的第二种方法是正确的。或者,我建议使用jQuery和

$(document).ready(function()
{
    alert("body loaded");
});

它是跨浏览器兼容的。如果没有jQuery,你需要处理IE和其他人之间的DOM事件差异。