这样:
<script>
alert(document.body)
</script>换成这样:
<body>
<script>
alert(document.body)
</script>
</body>

解决方案 »

  1.   

    不是标签的问题下面代码在ie6下报错,其它版本就没有问题
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <SCRIPT LANGUAGE=javascript>
    <!--
    function test(){
    alert("onfocus");
    }
    function test1()
    {
    if (document.all){

    document.body.onfocus =test;
    }
    }
    test1();
    //-->
    </SCRIPT></HEAD>
    <BODY></BODY>
    </HTML>
      

  2.   

    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <SCRIPT LANGUAGE=javascript>
    <!--
    function test(){
    alert("onfocus");
    }
    function test1()
    {
    if (document.all){

    window.onfocus =test;
    }
    }
    test1();
    //-->
    </SCRIPT></HEAD>
    <BODY></BODY>
    </HTML>
      

  3.   

    其实是“test1();”的调用时间问题,
    因为当执行“test1();”时,IE尚未解释到BODY,即此时尚未有BODY对象。我想应该如此调用:
    window.onload=test1;
    在整个页面装载完毕才执行“test1();”
      

  4.   

    seabell(百合心) 先谢谢你的回答,但我是想知道为什么document.body会是null,因为我有很多现成的代码都是用的document.body,可是到了IE6下就报错,我不想改以前的代码。
      

  5.   

    这样就不会出错:<HTML>
    <HEAD>
    <TITLE></TITLE>
    </HEAD>
    <BODY>
    <SCRIPT LANGUAGE=javascript>
    <!--
    function test(){
    alert("onfocus");
    }
    function test1()
    {
    if (document.all){

    document.body.onfocus =test;
    }
    }
    test1();
    //-->
    </SCRIPT>
    </BODY>
    </HTML>因为你的代码不在body内,个人感觉是IE6对这些的要求比较严格而已。
      

  6.   

    非也。document文档是按顺序装入的,你在执行<head>里面的代码时,<body>还没被装入呢。
    在尽量不改你的源程序情况下,可以这样:
    不要把调用test1()直接写在<head>里;最好这样:<body onload="test1()">