2011-08-19 78 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,但我想不出一個會嗆它的瀏覽器。 –