看板 Browsers 關於我們 聯絡資訊
※ 引述《Kenqr (夏天的微笑)》之銘言: : 剩1個warning無法修好 是因為iframe根本沒有onload事件可以用 : (http://www.w3.org/TR/html401/present/frames.html#edef-IFRAME: 既然在iframe中使用onload本來就是錯誤的語法
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)