• 締切済み

ドキュメント毎に表示させるフレームを変えたい場合

現在、ウェブサーバーにて大量のディレクトリーのファイルの一覧を自動的にウェブページ化し(インデックス表示)し、表示させています。このときに自動生成されるウェブページのドキュメントや画像のタグは<a src="ファイル名">ファイル名</a>のみです。 しかし、ページ数も多く、新規ファイルや削除などするファイルも多く、すべてのページに対して直接ウェブページを作成する事はできないのです。 ここでフレームページを使い、特定のドキュメントや画像、動画などを他のフレームに表示させる事はjavascriptなどを用いてできないものでしょうか? すべてのページを他のフレームに表示させるのならば<base target="どっかのフレーム名">とすれば良いのですがそれでは使えないので拡張しごとに表示するフレームを別にする方法があれば教えていただきたいと思っています。 もし、誰かこのような事をご存じの方がいれば是非ご教授して貰いたいと思っています。 ちなみに使用しているウェブサーバーソフトは「04WebServer」です。

みんなの回答

  • 665
  • ベストアンサー率72% (18/25)
回答No.3

body要素のonloadとwindow.onloadに違いはなかったはず。 以下はサンプル、分別したい拡張子付きのURLには、クエリやアンカーが付いていないことが前提です。 拡張子に含まれる文字は半角英数字のみだとした場合の例です。 window.onload = function() { var ext = { /* 拡張子のリスト:左は拡張子(小文字)、右はtargetの値 */ "html" : "frame1", "txt" : "frame1", "jpg" : "frame2", "gif" : "frame3" }; var myLinks = document.links; for (var i = 0; i < myLinks.length; i++) { if (myLinks[i].href.match(/\.([a-z\d]+)$/i)) { myLinks[i].target = ext[RegExp.$1.toLowerCase()] || "○○○"; } else { myLinks[i].target = "×××"; } } } ○○○は、リストにない拡張子のtargetです。 ×××は、拡張子がない場合(href="../"など)のtargetです。 不要ならばelse {...}ごと消してください。

lizuko
質問者

お礼

なるほど。 参考にさせていただきますm(_ _)m

回答No.2

bodyタグを書き換える事はできますか?bodyタグにonloadイベントを設定できれば、そこから呼び出す関数の中で、そのページのlinkを全てループして拡張子を調べながらtarget設定すれば良いと思います。 onloadイベントはScriptタグの中にwindow.onload=の形で書く事もできますが、これだとAタグが描画される前に実行されてしまうので正常に動作しないと思います。<body onload="function">の形が必要です。 Aタグの書き換えができないのであれば、クリックされた後で処理する事はできません。このような方法で事前にtargetを個々に設定するしかないと思います。

回答No.1

linkオブジェクトのtargetを、リンクURLの拡張子によって書き換えるようなルーチンを作って、Aタグのonclickイベントで呼び出せばできると思います。

lizuko
質問者

補足

具体的に現在自動生成されてできあげるウェブページのHTMLの内容が以下のようになっています。このように以外には生成してくれません。 ... <a href="../">Parent directory</a> <a href-"filename1.doc">filename1.ext</a> 1000kb 12:00<br> <a href-"filename2.jpg">filename2.ext</a> 50kb 11:00<br> ... という感じなります。しかしdefaultで表示するテンプレートを使用して表示できる事にも限度があり、ファイルのリンク毎にそのような事はできないのです。 これに<head></head>の部分にでもjavascriptで<script src="javascript.js"></script> で中に拡張子によって表示させるフレームを分岐というようにできればうれしいのですがどのようにすればよいのでしょうか?このscriptの記述の部分はウェブサーバーソフトで自動的にdefaultの表示ドキュメントを使ってすべてのページに表示させる事ができます。 javascriptのString.slice()やstring.split()等を使用してできない物でしょうか?

関連するQ&A