- ベストアンサー
HTMLとJavaScriptのインクルードについて教えて下さい。
いつも利用させて頂いてます。 またご教授をお願いします。 ヘッダー部分のHTMLをインクルードしようと思ったのですが、 ヘッダー部分にJavaScriptも組み込まれており、インクルードで読み込んだ 場合にはそのJavaScriptが停止した状態になってしまっています。 そこで、ヘッダー部分をインクルードした時に、動作も可能なJavaScriptを ご存知ありませんでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> var inc = document.createElement("iframe"); > > inc.id = "inc-" + id; > inc.src = filename; HTMLではsrc属性ですが、JavaScriptからはwindowオブジェクトとして扱うので、locationプロパティになります。 たぶん、createElementでも同様かと思います。 IEの注意点 document.createElement('<iframe src="'+filename+'">'); としないとファイルを読みません。 inc.contentWindowではなくinc.bodyだったかも。 DOCTYPE(互換モード、標準モード)にも影響するかも知れません。 IE7以前にはHTMLとXHTMLの違いはないと思います。
その他の回答 (3)
#2の方に質問に対する返答が的外れです。 同じことをお聞きしますが「何を使って」インクルードしたのですか? > ヘッダー部分にJavaScriptも組み込まれており、インクルードで読み込んだ > 場合にはそのJavaScriptが停止した状態になってしまっています。 どのようにそれぞれのデータを作成して インクルードしたのか説明して 下さい。
補足
Chiquilinさん ご回答ありがとうございます。 指摘頂いて申し訳ありません・・・。 以下のようなJavaScriptを利用して、 ヘッダをインクルードする箇所には、 <div>要素で表示させるものでした。 こちらを利用するとHTMLの表示は可能なのですが、 JavaScriptを読み込むとエラーになってしまいます。 ■JSファイル: function include(filename, afterfunc) { include.seq = (include.seq)? include.seq + 1: 1; var id = new Date().getTime() + "-" + include.seq; var inc = document.createElement("iframe"); inc.id = "inc-" + id; inc.src = filename; inc.style.display = "none"; document.write("<span id=\"" + id + "\"></span>"); var incfunc = function() { var s = (function() { var suffix = (n = filename.lastIndexOf(".")) >= 0 ? filename.substring(n): "default"; if (suffix == ".html") return inc.contentWindow.document.body.innerHTML; if (suffix == ".txt") return inc.contentWindow.document.body.firstChild.innerHTML; if (suffix == "default") return inc.contentWindow.document.body.innerHTML; })(); var span = document.getElementById(id); var insertBeforeHTML = function(htmlStr, refNode) { if (document.createRange) { var range = document.createRange(); range.setStartBefore(refNode); refNode.parentNode.insertBefore(range.createContextualFragment(htmlStr), refNode); } else { refNode.insertAdjacentHTML('BeforeBegin', htmlStr); } }; insertBeforeHTML(s.split(">").join(">").split("<").join("<"), span); document.body.removeChild(inc); span.parentNode.removeChild(span); if (afterfunc) afterfunc(); }; if (window.attachEvent) { window.attachEvent('onload', function() { document.body.appendChild(inc); inc.onreadystatechange = function() { if (this.readyState == "complete") incfunc(); }; }); } else { document.body.appendChild(inc); inc.onload = incfunc; } } ■表示用<div>部分 <div> <script type="text/javascript" > include("header.html"); </script> </div>
- SAYKA
- ベストアンサー率34% (944/2776)
何でそれをやろうとしたの? SSI?PHP?ASP?Javascript? どれであるかで回答がそれぞれ全然違う
補足
SAYKAさん ご回答ありがとうございます。 説明不足で申し訳ありませんでした。 通常のHTMLで、メニュー項目などを入力した 「header.html」というファイルをメインのコンテンツに 表示させたいと思っていました。 このheader.htmlファイルにJavaScriptを組み込んで いるんですが、どうもうまく動いてくれませんでした。 よろしくお願いします。
- dongri5656
- ベストアンサー率8% (8/100)
インクルードってなんですか? 辞書は引いてみましたが。
補足
dongri5656さん ご回答ありがとうございます。 説明不足で申し訳ありませんでした。 通常のHTMLで、メニュー項目などを入力した 「header.html」というファイルをメインのコンテンツに 表示させたいと思っていました。 このheader.htmlファイルにJavaScriptを組み込んで いるんですが、どうもうまく動いてくれませんでした。 よろしくお願いします。
お礼
talooさん ご回答ありがとうございます。 DOCTYPEにも影響されることがあるんですね。 そこは見落としていました^^; ご意見を参考にさせて頂きながら、もう少しがんばって みようと思います。 ありがとうございました。