→ tyf99:iframe onload 非 W3C 標準我知道,但連 Joomla 官方都在用
→ tyf99:觸發改 height 也只有 onload 比較有效率,想避也避不開.
我沒有實際測試,但這應該很容易改寫成標準的作法。
iframe 的 onload 實際上沒有意義,因為是 iframe 裏的 document 被 load,
所以當然 onload 只會寫在 body 裏。
但在原 po 的例子裏,如果事件的觸發寫在 iframe 裏的 document,
是沒辦法改到原網頁裏的物件高度。
所以正確的寫法是,在原網頁的 body 裏寫 onload,
觸發一個 javascript function,
然後 iframe 給一個 id 名稱,
在 function 裏用 document.getElementById 的方式抓到 iframe 後,
再去改 height。
目前想到的是這樣。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.74.131
※ 編輯: Hemiola 來自: 123.193.74.131 (07/21 16:26)
※ 編輯: Hemiola 來自: 123.193.74.131 (07/21 16:27)
→ tyf99:js 抓不到 iframe,應該說它根本不會知道有 iframe 的存在 07/21 18:33
→ tyf99:document2 == document1.iframe.contentWindow.document 07/21 18:35
→ tyf99:從 documnet2 不可能抓到 document1.iframe 07/21 18:36
→ TonyQ:可以用 parent 啊 :p 你小看它了 07/21 20:20
用 document.defaultView.parent.document.getElementById 就可以了。
實作成果在此:
http://hemiolapei.free.fr/temp/test.html
不知道是不是你要的樣子。
而我發現 Kenqr 做的雖然是用 <ifram onload...
但是也有同樣的效果啊。
※ 編輯: Hemiola 來自: 123.193.74.131 (07/21 22:33)
→ Hemiola:上面的做法,只有 fx 和 opera 是正常的 07/21 22:49
→ ileadu:其實啊 我覺得改一改後 原本的兩個hr橫線 都變得只剩上橫線 07/22 08:28
→ tyf99:1. 很明顯 fx,op 抓到的 page height 都錯誤. 07/22 11:40
→ tyf99:2. WebKit 抓到正確的 height,但是只能小變大,不能大變小 07/22 11:41
→ tyf99:3. Kenqr 的語法就是我原本的語法,僅是補上 dtd, title 07/22 11:45
→ tyf99:我也很納悶為什麼加上 dtd 後,原本的 page height 就跑掉了 07/22 11:48
→ tyf99:是 W3C 定義的 dtd 有問題?還是 fx,op 解讀 dtd 出問題? 07/22 11:49
→ tyf99:我到現在還是不知道我有哪行程式是 ileadu 說的 ie only? 07/22 11:51
Firefox 和 Opera 才是對的。
因為 scrollHeight 不包含物件的 margin,
照你的程式碼,你設 iframe 的 height 等於 頁框 body 的 scrollHeight,
就會漏掉頁框 body 的 margin,所以會看不到底下那條 hr。
※ 編輯: Hemiola 來自: 123.193.74.131 (07/22 12:10)