<iframe> の中のコンテンツの高さを測って高さを変える、というスクリプトを提供している。
これがIE8で動かないという問い合わせを受けたので調べてみたらIE7でも動かない。うそお。動作確認したと思ったのに…。他のスクリプトの影響か?ついIEを無視してしまったんだっけ?今まで問合せ来ないってどうよ (T T) 役に立ってないのか…。
直接の原因は<iframe>内ページのコンテンツ高さが obj.scrollHeight で取得できない事。IE以外のブラウザではOK。バグ、という報告もある。しかし落ち着いて調べたらうまく行っているページもある…。
原因はDTD宣言。HTML Transitional 4.01 の場合のみ、DTDのURL表記が無いDTD宣言だとオブジェクトの高さが取得できなかった。
結果は以下の通り。IE7およびIE8で確認。
HTML4.01 Transitional DTDのURLなし
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
ダメ
HTML4.01 Transitional DTDのURLあり
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
OK
HTML4.01 Strict
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
OK
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN”>
OK
XHTML1.0 Transitional
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
OK
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”>
OK
XHTML1.0 Strict
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
OK
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”>
OK
XHTML1.1
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
OK
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”>
OK
HTML5
<!DOCTYPE html>
OK