• 締切済み

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

現在、ウェブサーバーにて大量のディレクトリーのファイルの一覧を自動的にウェブページ化し(インデックス表示)し、表示させています。このときに自動生成されるウェブページのドキュメントや画像のタグは<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

  • フレーム内の表示がされない

    お世話になります。 Webサイトを運用しているのですが、フレームできられたページにおいて、それぞれのフレーム内の内容が表示されない現象がたまにでます。現象はさまざまですが、たとえばA・Bのフレームがあった場合、Aは表示されるが、Bは表示されない。又はその逆などです。 ちなみに表示されない状態では、フレーム内は空白で、エラーページが表示されるわけではありません。 Webアクセスが込み合っているのかと思い、10分位置いていても表示されず、その後リロードすると正常に表示されます。 このような現象は、他のサイトでも見る事がございますが、原因がわかる方おられましたら、是非教えていただきたいと思います。 環境------- Solaris8 Apache 1.3.26

  • フレームが表示されない><

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <Html Lang="ja"> <Head> <Meta Http-equiv="content-type" Content="text/html; charset=Shift_JIS"> <Title>フレーム</Title> </Head> <Body> <Frameset Cols="20%,80%" Border="1" FrameBorder="1" BorderColor="#000000"> <Frame Src="menu.html" Name="Left" Scrolling="auto"> <Frame Src="home.html" Name="Right" Scrolling="auto"> </Frameset> <Noframes> このページはフレームに対応していないブラウザではご利用いただけません。 </Noframes> </Body> </Html> というHTMLを書きました。。。これをIEで表示させたのですが、真っ白のまま全然表示されません。。。なにか間違っているでしょうか? ちなみにフレームに表示させたいページのHTMLはフレームと同じフォルダに入っています。。 また、サーバにUPして試しても同じでした。サーバでも表示させたいページは同じファイル名にしてあるので、このまま使えると思うのですが、、、(使っているサーバではアドレスではなくUPしたファイル名を使うようになっている) ず~っとなやんでいますが、どこがおかしいのか全然わかりません。。教えてください。

    • ベストアンサー
    • HTML
  • ドキュメントのファイル名が表示されない

    ドキュメントのファイル名が表示されない 原因はわかりませんが、ドキュメント内のファイルの名前がでなくなりました。 どうやったら名前を表示できますか? 他のフォルダのファイル名などは正常に出てます。 画像は今、違うパソコンを使っているので イメージ画像です。

  • 3分割フレーム表示の2つのフレームをリンク後1つに

    こんにちは、お世話になります。 現在横に3分割のホームページを作成しております。 一番上のフレームにサイト名やカウンターを、 真ん中がメインのフレーム、 一番下がメニューのフレームなのですが、 メニューフレームにあるリンクをクリックした際に、 一番上と真ん中のフレームをひとつのフレームとして表示させることはできませんでしょうか? たんに一番上と真ん中のフレームに違うページを表示させる事は可能なのですが、それではフレームが3分割のままなので、一番下のフレームにあるリンクをクリックした際に、上2つのフレームがまとまりひとつになって欲しいのです。 また、フレームのことではないのですが、 サイトにアクセスする度に(自動でリロードさせその度でも構わないのですが)、 表示されている画像をランダムで切り替えることはでいないでしょうか? 当方のサーバーはCGI不可の為、javascript等でできないかなと思いまして。 説明がわかりづらくて申し訳ありません、カテもどこかわからなかったのでこちらにさせて頂きました。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • 固定フレームのついたフレームページにリンクするには?

    メモ帳でホームページを作っています。初心者です。 メニューページにはフレームを使わず、 コンテンツ用ページを二つのフレームを使って、上部に各コンテントファイル、下部にメニュー(各コンテント名を一覧表示)が表示されるようにしています。下部フレームは固定フレームにしたいと思っています。 メニューページで各コンテント名をクリックしたとき、 上部にそのコンテントファイル、下部に固定メニューファイルの表示されたフレームページへリンクさせたいのですが、この方法がわかりません。 初めは、フレームページにアドレスを付けてリンクすればいいのよねー、と試みたのですが、そうすると全てのフレームページ、つまり上部フレームにそれぞれのコンテンツファイルが表示され、下部にメニューファイルが表示されたフレームページのひとつひとつにアドレスをつけないと、リンクできないのでは?と疑問がわきました。 しかし、それではフレームページの固定メニューファイルの各コンテント名をクリックしたときに、上部フレームにはコンテンツファイルのみでなく、各コンテンツのフレームページが表示されてしまい、下部の固定フレームが増えていって(泣)変なことになってしまいますよね。 フレームページ間のリンクは、その固定フレームの各コンテント名のtargetを上部フレーム名にすればよいので問題ないのですが・・・。 メニューページもフレームページにすれば解決するでしょって感じですが^_^;、メニューページには各コンテント名が載せてあるのに下にも同じ項目を並べるのはくどい気がして、ちょっと・・・と思いまして。 ご存知の方よろしくお願いします!

    • ベストアンサー
    • CSS
  • フレーム部分が表示されたりされなかったり・・・

    忍者TOOLSの只今ホームページ(URL参照: http://www.shinobi.jp/s-web.html )というサーバーでホームページを作っています。 インデックスはフレームで2分割している形です。 サーバーが指定している通り、フレーム部分はmenu.htmlにしてあります。 ですが、フレーム(メニュー部分)が表示されないことが大半です。 なので、インデックスからどのページにも飛ぶコトができず、 困っています。 友達のブラウザで試したところ、表示されました。 「ウイルスじゃないの?」って言われて心配してます。 何が原因なのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • HTML
  • ページを開いたときフレーム内に正しく表示しない

    画面が3つのフレームで成るページ(以下、「A」と称します)を作りました。Aは、上半に1フレーム、下半の左側に1フレーム、同右側に1フレームの3つのフレームで成っています。左下のフレームにリンク元が表示されておりそこをクリックすると右下のフレームにリンク先のページが表示されるようにしてあります。 しかし、Aを開くと右下のフレームにはリンク先のページが表示されず、代わりに次のようなメッセージが表示されます。 ページを表示できません。 検索中のページは現在、利用できません。Web サイトに技術的な問題が発生しているか、ブラウザの設定を調整する必要があります。(以下省略) 右下のフレームにきちんと表示させるにはどうしたらよいのでしょうか。 ただ、右下のフレームに上記のメッセージが表示されているとき左下のフレームのリンク元をクリックすると、右下のフレームには正しく表示されます。

    • ベストアンサー
    • HTML
  • フレームページが表示されません!?

    ホームページビルダー9.0を使ってます。上中下3分割フレームページを作ってます。フレームページ設定の段階でbottomの部分にページを開くを指定し、HTMLファイルを選択しました。サイト完成後、Upし見てみたら、bottomの部分だけ赤の×印がついて画像が表示されません。20ページ程あるのですが、全て同じ作り方をしたので、どのページも表示されません。プレビューやIEでは表示されるのですが・・・ 解決策をご存知の方よろしくお願いいたします。

  • フレーム内のページを表示した時、自動的にフレーム表示にする方法

    フレームの元となるページ「A」、 そのフレーム内に表示するページ「B(メニュー)」、「C(コンテンツ)」があったとします。 例えばGoogleからの検索で「C」に訪問があった場合などに、ページ「A」に自動的に転送したいです。 「C」だけだと、「B」に表示してあるメニューが見れない為です。 もし上記のような「転送」など、または他の解決方法がありましたら、教えていただきたいです。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • サーバー内のファイル一覧をWebで表示

    サーバー内の特定のフォルダにアップされているファイルを一覧できるWebページを作ろうと思っています。 Webページの機能として、1週間以内に追加/更新されたファイル名を一覧表示、ということを考えています。 サーバー環境はWindows2000 proの端末に04Webserverというフリーのサーバーソフトを入れていますが、何か方法はあるでしょうか。 perlは分かりませんが、phpやbatファイルは多少扱った経験があります。 もし何かアドバイスがありましたら宜しくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう