質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

32711閲覧

静的HTMLに静的HTMLをincludeする簡単な方法はありますか?

kurosawa

総合スコア780

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

3クリップ

投稿2015/06/05 15:47

現在はこちらを参考に表題を実現させています。
静的HTMLで、インクルードを実現するためのJavaScript

やりたいことは、画面上部に同じメニューがある複数の静的HTMLがあり、
メニュー箇所を外だしすることで変更時に1カ所だけ修正するようにしたいのです。

Include条件としては
・サーバサイドプログラムは利用したくない
SSIやPHPでHTMLの組み合わせはNG。
クライアントから(PHPをコールしHTML出力させる)外部呼び出しもNG

・セキュリティ的にiFrameはやりたくない

・ユーザビリティから
HTML5は利用したくない
jQueryとか重いJSは読みたくない

といった制約があります。

クライアント側でJSを使って結合させる方法しかなさそうですが、、、

最近の技術で良い方法あれば教えてください。
単純にさくっと include させたいだけです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

全然最近の物じゃないですが...

lang

1<object type="text/html" data="include.html"></object>

これくらいしか思いつきません。

投稿2015/06/05 16:37

編集2015/06/05 16:39
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurosawa

2015/06/06 06:11

そうですね。私も最初にこれを実施してみたのですが この手法だとHTMLがオブジェクト内部で展開されてしまうので、 リンク配置で押下するとオブジェクト内で展開されてしまうのです。 さっくり簡単にできるのですが、凄くおしい! ご返答ありがとうございました!
退会済みユーザー

退会済みユーザー

2015/06/06 06:58

そこが問題なんでしたら メニューの<a>にtarget属性を指定で解決できませんかね?
kurosawa

2015/06/06 07:11

さっそくの返答ありがとうございます。 target属性をすべて指定してみましたが、当然”_blank”はNGとして その他は、すべて内部で展開されてしまいます。 _selfはオブジェクト内を自分自身のウィンドウと認識しているようですし、 _top,_parentはそもそもフレーム分割していないので、やはり自分自身の オブジェクト内で展開されてしまうのかと思っています。 ご指摘ありがとうございました!
退会済みユーザー

退会済みユーザー

2015/06/06 08:42

target="_parent" で試した所上手く行きましたけどね.. chromでしか試してませんが いずれにしても ifreamと同じことになりますけどね。 お力になれなくて..残念です。 良い対策が見つかったら また 投稿してください。
kurosawa

2015/06/06 10:49

ごめんなさい。 再度検証してみたら、target="_parent" で動作しました!(FF/Safariで確認) OBJECTタグの縦横の調整は若干必要ですが、 余計なJSなどを使わずに要件が実現できそうです。 > target="_parent" で試した所上手く行きましたけどね.. この一言が無ければ諦めるところでした。ありがとうございました! これで実装してみます。
guest

0

メニューを読み込むのではなく、コンテンツ部分をajaxで切り替えていくとか。
PHP使えばいいのに。

投稿2015/06/05 16:50

lightwill

総合スコア962

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurosawa

2015/06/06 06:24

ご返答ありがとうございます。 中規模までなら、その手法でいけますね。 ただし大規模サイトとなると問題がでてくるのです。 リソース面から静的ページにはなるべくCPUを利用させたくない。 ページ単位の処理時間も最小限にしたい。という要望があるので、 さらに今後の保守性も考えて簡単に実現できないものか?と考えてました。 どうしてもスクリプト系は重いし、 脆弱性パッチの適用などの運用が必要になってくるので それは避けたいと思っています。
sounisi5011

2015/06/06 15:44

PHP等を利用して動的にHTMLを生成した後、それをファイル化し、以後それを参照するようにしておけば、 最初の生成時のみPHPで変換するため、負荷を下げることも可能です。
kurosawa

2015/06/06 15:58

コメントありがとうございます。 おっしゃるとおり、バックエンドで作成する手法もありますね。 ただ、ウェブサーバのリソース問題は解決しますが 今後スコープが拡張した際に、そのバッチに手を加えるなどのメンテナンスが 少なからず発生します。 よって、今回はHTMLだけで完結する手法を探しておりました。 わざわざご返答くださいまして、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問