• ベストアンサー

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