• ベストアンサー

HTMLとJavaScriptのインクルードについて教えて下さい。

いつも利用させて頂いてます。 またご教授をお願いします。 ヘッダー部分のHTMLをインクルードしようと思ったのですが、 ヘッダー部分にJavaScriptも組み込まれており、インクルードで読み込んだ 場合にはそのJavaScriptが停止した状態になってしまっています。 そこで、ヘッダー部分をインクルードした時に、動作も可能なJavaScriptを ご存知ありませんでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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の違いはないと思います。

nepiapi
質問者

お礼

talooさん ご回答ありがとうございます。 DOCTYPEにも影響されることがあるんですね。 そこは見落としていました^^; ご意見を参考にさせて頂きながら、もう少しがんばって みようと思います。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

noname#176215
noname#176215
回答No.3

#2の方に質問に対する返答が的外れです。 同じことをお聞きしますが「何を使って」インクルードしたのですか? > ヘッダー部分にJavaScriptも組み込まれており、インクルードで読み込んだ > 場合にはそのJavaScriptが停止した状態になってしまっています。 どのようにそれぞれのデータを作成して インクルードしたのか説明して 下さい。

nepiapi
質問者

補足

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("&gt;").join(">").split("&lt;").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)
回答No.2

何でそれをやろうとしたの? SSI?PHP?ASP?Javascript? どれであるかで回答がそれぞれ全然違う

nepiapi
質問者

補足

SAYKAさん ご回答ありがとうございます。 説明不足で申し訳ありませんでした。 通常のHTMLで、メニュー項目などを入力した 「header.html」というファイルをメインのコンテンツに 表示させたいと思っていました。 このheader.htmlファイルにJavaScriptを組み込んで いるんですが、どうもうまく動いてくれませんでした。 よろしくお願いします。

すると、全ての回答が全文表示されます。
回答No.1

インクルードってなんですか? 辞書は引いてみましたが。

nepiapi
質問者

補足

dongri5656さん ご回答ありがとうございます。 説明不足で申し訳ありませんでした。 通常のHTMLで、メニュー項目などを入力した 「header.html」というファイルをメインのコンテンツに 表示させたいと思っていました。 このheader.htmlファイルにJavaScriptを組み込んで いるんですが、どうもうまく動いてくれませんでした。 よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A