htmlファイルに別のtxtファイルの内容を読み込ませる
とりあえず,インラインフレームを使ってみた.
<body> <iframe src="sample.txt" title="sample"> この部分はインラインフレームを使用 </iframe> </body>
その後,その読み込ませた内容の文字サイズを変更したかったんだけど,そこでつまづいた.
インラインフレーム内の文字の大きさ - 質問・相談ならMSN相談箱
上記を参考にJavaScriptでやろうとしたんだけど,
<body> <script type="text/javascript"> <!-- var fSize = "9pt"; var ifr = document.getElementById('sample'); var ifrDoc = (ifr.contentDocument ) ? ifr.contentDocument : ifr.contentWindow.document ; ifrDoc.body.style.fontSize = fSize; // --> </script> <noscript> JavaScriptを使用してます. </noscript> <iframe src="sample.txt" title="sample" id="sample"> この部分はインラインフレームを使用 </iframe> </body>
これだと文字のサイズが変わってくれない.
Firebugを使うと,エラーが発生していて,どうやら,ifrに正しく値がセットされていないらしいことが分かった.
んで,Firebugのコンソールでalert(ifr);を実行すると確かに,nullになっている.
もしかしたら,実行されるタイミングが関係するのか?と思って調べてみると,まさにその通りだった.
JavaScriptが実行される位置よりも後にid指定された要素、例えばgetElementById()なんかが記述されていると、その要素が取得出来ないということをつい最近知りました。
最終的には,window.onloadを使って以下のようになった.
<body> <script type="text/javascript"> <!-- window.onload = function() { var fSize = "9pt"; var ifr = document.getElementById('sample'); var ifrDoc = (ifr.contentDocument ) ? ifr.contentDocument : ifr.contentWindow.document ; ifrDoc.body.style.fontSize = fSize; } // --> </script> <noscript> JavaScriptを使用してます. </noscript> <iframe src="sample.txt" title="sample" id="sample"> この部分はインラインフレームを使用 </iframe> </body>
あまり勉強せずに,JavaScriptを見よう見まねで使っているからこんなことになる,ちゃんと勉強しよう.
そもそも,iframeを使うという選択肢で良かったのだろうか.