- 締切済み
別HTMLファイル参照
よくフレームを使って共通ファイルを埋め込みますよね? それをフレームを使わないで別HTMLファイルを埋め込みたいのですがPerlなんかでいい方法はあったりしますか? ちなみに先日似た質問をPHPでできますか?と質問したところ、参照先までPHPファイルになるということで、今回はHTMLでいきたいので再度似た質問させていただきました。 前回答えていただいた方々すみません。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- togino
- ベストアンサー率75% (97/129)
> Perlなんかでいい方法はあったりしますか? Perl を使うと、参照先が Perl ファイルになりますけど、それでもいいのですか?(具体的には main.cgi みたいな感じです) > 今回はHTMLでいきたいので PHP にしても Perl にしても、サーバサイドプログラミングと呼ばれるものです。いわゆる CGI っていうものですね。 PHP が嫌っていうことは、CGI を使いたくない、と解釈しましたけど、それだと Perl だって同じですよ。 HTML でいきたいというのは、クライアントサイドプログラミングでやりたい、しかしフレームでは嫌だ、ということですので、JavaScript や DHTML を使うことになると思います。 main.html を以下のファイルにします。 <html><head> <script type="text/javascript" src="sub.js"> </head><body> <script type="text/javascript"> <!-- printCommon(); // ←ここに共通の内容を埋め込む // --> </script> </body></html> sub.js を以下のファイルにします。 function printCommon() { document.write("共通の内容"); } --- フレーム(たぶん iframeも)を使いたくない、PHP (つまり CGI なので Perl も一緒)も嫌で HTML じゃないといけない、という理由を教えて頂けると、もっといい解決法が提示できると思いますが・・・
1.埋め込まれる方のファイルに「ココに埋め込む」といったマークを入れておく 2.埋め込むファイルと埋め込まれるファイルの両方を読み込む 3.埋め込まれる方のマークの位置を、埋め込む方と正規表現で置き換える 4.表示する 俺はいつもこういう方法を使ってます。 たとえば、 $/ = undef; open(IN,"<base.htm");#埋め込まれる方 $base = <IN>; close(IN); open(IN,"<index.htm");#埋め込む方 $index = <IN>; close(IN); $base =~ s/<include>/$index/ig; print "Content-type: text/html\n\n"; print $base; とまぁ、こんな感じですかね。
お礼
投稿、ありがとうございます。 Perlがはじめてだったもんで、設置がうまくできませんでした。 拡張の付け方がわからなかったり(;; なんで.cgiファイルとperlファイルに別れてるの? ってレベルなんでまだまだ勉強が必要でした。 今回は拡張子が.htmlで済みそうなjavascriptでいってみようと思います。
補足
投稿ありがとうございました! フレーム(たぶん iframeも)を使いたくない、PHP (つまり CGI なので Perl も一緒)も嫌で HTML じゃないといけない、という理由 ↑ フレームページで検索エンジンにバラバラでヒットするのを嫌っています。 ただOKWEBだとそれを回避するフレームページの造り方の知恵も存在しそうですね(^^ また自由自在にPHP、Perlを使えればそれでいいのですが、ページ全部をPHP、Perlにしてしまう知識が及んでいないというのが理由です。 早速試しにやってみましたが、うまくいきませんでした。 まずメインに <html><head> <script type="text/javascript" src="sub.js"> </head><body> できたかな? <script type="text/javascript"> printCommon(); document.write("共通");// ←ここに共通の内容を埋め込む // </script> 出てるかな? </body></html> 参照に "sub.js" に function printCommon() { document.write("共通項目"); } と書いたのですが結果は 出てるかな? って表示されるだけでした。 また、その間違いは別としまして、tableを参照したいのですが下記で表現はいいのでしょうか? function printCommon() { document.write("<table><tr><td>共通項目</td></tr> <tr><td>共通2</td></tr></table>"); } 強引でしたかね?! 原理はわかったつもりなのですがうまくいかないので、もう一声お願いします!!