最近做項目時遇到一個問題,就是js在框架結構的網頁文件與普通的網頁文本文件執行順序的區別
demo1:normal <html> <head> <script>.......</script> </head> <body>........</body> </html> demo2: frameset <html> <head> <script>.......</script> </head> <frameset> <frame>........</frame> <frame>........</frame> </frameset> </html>
普通文件(demo1):按代碼的先后順序執行,所以是先加載js,后加載dom文件;所以要在js獲得dom中的節點元素必須是在dom加載完畢才可以,否則為null;
框架結構(demo2):先加載網頁文件,再加載js;
window.frames[0].src為什么不行
最近很多朋友所問關於框架的問題都是因為不明白DOM框架原理而引起的,在這里就我所了解的,一並回答:
在DOM文檔對象模型中,window對象處於最高層,而框架除了是當前窗體的一個節點外,本身也是一個獨立window對象, 當frames作為window對象時,有name屬性,而沒有src屬性,只有作為節點時才有src屬性, 也就是說window.frames[0]這種寫法代表一個window對象,所以window.frames[0].src 當然是undefined了 ,這也是很多人容易混淆的原因!
若要獲得src屬性,可以這樣寫:document.getElementById(frame_id).src //節點對象