[JS]Google Chrome v31 でcontentDocumentが使えない件について

Google Chromeのヴァージョンを31にアップしたら
とあるサイトのIFrameが表示されないようになりました。

いろいろと追っていくと
IFrameの表示領域を動的に変更している
JSが原因だと判明しました。
下記がそのコードの抜粋です。
(ID名や細かい所は変えています)

HTML部分

<html>
	<head>
		<title>
			TEST
		</title>
	</head>
	<body>
		<iframe src="http://hogehoge.com/" id="iframe" onload="javascript: iframeResize();"></iframe>
	</body>
</html>

JavaScript部分

<script>
	function iframeResize() {
		#No. 01
		var h = document.getElementById( "iframe" ).contentDocument.height;
		// 対象サイトの高さ + 10(マージン)を適用
		document.getElementById( "iframe" ).style.height = ( h + 10 ) + "px";
	}
</script>

上記のコードだと
No.01の部分の変数[contentDocument]に
対して変数[height]というものが
格納されていなかったので【10px】のみが適用されます。

というわけで、Google DevToolで追っかけて
上記の「JavaScript部分」を下記のコードに変更しました。

JavaScript部分

<script>
	function iframeResize() {
		var h = document.getElementById( "iframe" ).contentDocument.documentElement.offsetHeight;
		// 対象サイトの高さ + 10(マージン)を適用
		document.getElementById( "iframe" ).style.height = ( h + 10 ) + "px";
	}
</script>

という訳で対象変数がまるっと変わっています。
自身の環境上ではこれで上手く動作できました。
ここにリンクを対象コードを記載したファイルへの
リンクを貼って置きますのでほしい方はご自由にどうぞ。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)