概要 ▶ #このページはフレーム内に目的のページを無理矢理表示させようと頑張ってみたことを書いたページです。内容は薄いのはご勘弁を。フレームは悪、と言われれば「そうか?」と思う。ヘッダーの変更やらサイドバーの変更やらで、それなりのソフトを使っている方々は良いのだろうけれども、そうでない人はなかなか大変ってな、まぁ作り手側の言い分ではあるが。Webビジネスコンサルタントのネタ帳の「フレームを使うと「ここを見て
フレームは悪、と言われれば「そうか?」と思う。ヘッダーの変更やらサイドバーの変更やらで、それなりのソフトを使っている方々は良いのだろうけれども、そうでない人はなかなか大変ってな、まぁ作り手側の言い分ではあるが。
Webビジネスコンサルタントのネタ帳の「フレームを使うと「ここを見てください」とURLを伝えることが事実上できなくなる - 後悔しないためのWebデザイン」(ywcafe.net)という記事の中で(というかタイトルで)
フレームを使うと「ここを見てください」とURLを伝えることが事実上できなくなるとあったので「できないのか?」と思ったのでチャレンジしてみた。
まぁ、アイデアは良かったけど…だからどうしたんだ、と言った感じ(汗)。実用的かどうかはさておき、会社のページには実装してしまった。動かさなくても影響はないし。
アイデアは以下の通り。
親フレームのURLは「http://www.会社名.jp/index.html」とする。
親フレームから子のフレームが2つ呼び出されると仮定する。
子のフレームはそれぞれA・Bとして、Aはヘッダーとし、Bをコンテンツとする。
Aはどのページに行っても変わらないとする。
Bのフレームには「http://www.会社名.jp/product/nowonsale/index.html」を表示させたい。
Bのフレームが読み込みが終わったらonloadなどのイベントでJavascriptで以下の内容が書かれた関数が発動するようにする。
if (parent.location.search.length >= 2)
{
document.location.href = "http://www.会社名.jp/" +parent.location.search.substring(1,parent.location.search.length);
}
あとは、お客様などにアドレスを教える場合には
「http://www.会社名.jp/index.html?product/nowonsale/index.html」
と書く。
「http://www.会社名.jp/index.html?product/nowonsale/index.html」へのアクセスはBのフレームの内容が一瞬表示されるが、間もなく目的のページ「http://www.会社名.jp/product/nowonsale/index.html」が表示される。(?がない、もしくは?以降がない場合は普通にindex.htmlが表示されて終わり)
以上。とりあえずできました(笑)。
我ながらあんまり意味のないことを考えるものです(笑)。
「?」が入っているので再考の余地はあります(→参考:「ある経験則-ユーザーは?や=の入ったURLを嫌う?」(Webビジネスコンサルタントのネタ帳より)(ywcafe.net))。(味の素の「ピュアセレクトマヨネーズ」(ajinomoto.co.jp)はなぜか「?」が2連続。意味あるのかしら。)
【余談】
本当なら親フレームの中のFRAMEタグをJavascriptで指定すれば(document.writeで書けば)簡単じゃないのか、と思ったのだが、なぜかJavascriptでFRAMEタグを書くとうまく認識されないのでこんな変則的な形になってしまった。なぜうまくいかないかは不明。