首要要做配置操作,配置兩個域名,我這裡使用的是Apache。附件中的demo1和demo2
iframe的一些屬性介紹:
屬性
值
描述
align
left
right
top
middle
bottom
不贊成使用。請使用樣式代替。
規定如何根據周圍的元素來對齊此架構。
frameborder
1
規定是否顯示架構周圍的邊框。
height
pixels
%
規定 iframe 的高度。
longdesc
URL
規定一個頁面,該頁面包含了有關 iframe 的較長描述。
marginheight
定義 iframe 的頂部和底部的邊距
marginwidth
定義 iframe 的左側和右側的邊距。
name
frame_name
規定 iframe 的名稱
sandbox
""
allow-forms
allow-same-origin
allow-scripts
allow-top-navigation
啟用一系列對 <iframe> 中内容的額外限制。
scrolling
yes
no
auto
規定是否在 iframe 中顯示滾動條。
seamless
規定 <iframe> 看上去像是包含文檔的一部分。
src
規定在 iframe 中顯示的文檔的 URL。
srcdoc
HTML_code
規定在 <iframe> 中顯示的頁面的 HTML 内容。
width
定義 iframe 的寬度。
這個上傳我伺服器端使用的是PHP代碼。
使用iframe上傳的關鍵點是target="iframeUpload",這個屬性的設定。action.php中的代碼如下:
同域的情況下:
網絡中的方法一:直接用onload函數擷取iframe中的内容高度,如果頁面載入一次以後,高度不變,這招是挺好用的,但是我在firefox與IE中,表現不理想,如圖,并沒有完全的将頁面顯示,chrome和safrai的表現不錯。
後面發現,如果在iFrame1.document.body.scrollHeight的後面在加上20的話,iframe也是能完全展現出來的,這個應該是受到了我autoheight.html這個頁面裡的CSS影響,
autoheight.html中的頁面代碼是這樣的:
為了驗證我的猜想,我把padding給去除掉,還是用原先的代碼onload="this.height=iFrame1.document.body.scrollHeight",但事實與我的猜想完全不同
這句是用來擷取iframe的window對象。
意思就是一些浏覽器可以通過iframeElement.contentDocument.parentWindow獲得iframe的window對象。經過測試發隻有IE9與IE8是根據iframe.contentDocument.parentWindow來擷取的,其他firefox、chrome、safrai、IE6、IE7都是根據frame.contentWindow擷取的
這句話就是在擷取iframe的高度了。
body是DOM對象裡的body子節點,即 <body> 标簽;
documentElement 是整個節點樹的根節點root,即<html> 标簽;
剛剛上一個方法由于用的是body.scrollHeight導緻了各個浏覽器的解釋不同,引起了顯示的不一緻。經測試發現使用documentElement.scrollHeight後,都能正确顯示。
異域的情況下:
跨域的時候,由于js的同源政策,父頁面内的js不能擷取到iframe頁面的高度。需要一個頁面來做代理。總共有三張頁面,
index.html中代碼:
iframe.html中代碼:
agent.html中代碼:
網絡方法一:這是一種通過第三張頁面來跨域執行函數,一種代理的感覺
iFrame4與iframeD分别為index_cross.html與cross_domain1.html頁面上面的iframe的id。
這是一種非常優雅的方式,但是是用url的方式在傳遞參數,大小被受到了限制,如果資料量大的話,是會有問題的。
index_cross.html中代碼:
cross_domain1.html中代碼:
cross_domain2.html中代碼:
成功後出現的提示資訊
網絡方法二:
1) 支援HTML5的浏覽器可以使用postMessage
IE8、IE9、firefox、chrome和safrai可用postMessage函數
index_cross.html中代碼:
post_message.html中代碼:
2) IE6、IE7可以用navigator對象的跨大域漏洞
navigator.html中代碼:
源碼可以在這裡下載下傳:
<a href="http://files.cnblogs.com/strick/iframe.rar">iframe.rar</a>
參考資料:
本文轉自 咖啡機(K.F.J) 部落格園部落格,原文連結:http://www.cnblogs.com/strick/p/3814872.html,如需轉載請自行聯系原作者