2011-08-19 72 views
0

是不是“好”有嵌入另一个HTML文档的body标签内的HTML文档?

我想这样做的原因是我可以调用一个javascript body onload - 我不能在主HTML文档中这样做,因为主HTML代码是由控制器(Yii)动态生成的,它控制其他页面,我不想编辑它。将HTML文档放在另一个HTML文档的<body>内可以吗?

*顺便说一下,我试了一下,现在看起来工作正常,但我只是想确保页面不会因任何原因而在未来中断。

<html> 
<head> 
<body>  
    <html> 
    <head> 
     <script type="text/javascript> 
     function somefunction(){ 
     } 
     </script> 
    </head> 
    <body onload="javascript:somefunction()">  
    </body> 
    </html> 
</body> 
</html> 
+0

检查http://stackoverflow.com/questions/2035462/multiple-htmlbody-html-body-in-same-file –

回答

3

如果你想要做的就是附加一个onload事件,你要去了解它的错误的方式。

所有你需要做的就是添加一个script元素,重视onload事件:

<script type="text/javascript"> 

    function somefunction() 
    { 
    ...do stuff... 
    } 


    document.body.onload = somefunction; 

</script> 

另外,如果你在页面的底部附加您的JS文件,他们就可以以类似于onload的工作方式与DOM进行交互。使用onload的原因是只有让网页中定义的元素已经被执行的函数的时候加入到DOM。如果您的脚本位于内容之后,则这些元素将位于DOM中。

+0

另请注意,'onload'将在发射前等待页面的资源(如图像)加载。将脚本放在''的底部不仅保证像'onload'这样的DOM访问,而且还会首先触发。 – Matchu

+0

@zzzzBov感谢您的好评! – m0rtimer

+0

脚本放在页面不相同的执行,以底部'onload'主要区别在于第一个脚本在底部不会有机会获得:后续的脚本,它们所包含的代码,它们添加任何功能。 'onload'表示所有内容都已加载,这允许跨脚本引用而不受惩罚。 'document.onreadystatechange'是另一个需要研究的功能。 – zzzzBov

1

不,这是错误的HTML。

只要把你的JavaScript在底部</body>之前。

+0

为什么-1 ????? –

+0

它当然不是有效的HTML,但我想不出一个会呛它的浏览器。 –