プロが教えるわが家の防犯対策術!

 ”フレームhtml”にリンクを張った場合、同時にそのフレームの中身まで指定することってできるのでしょうか?
 リンク元のページ(フレーム未使用)を「contents.html」とします。
このページには、「自作イラスト」を紹介するページへのリンクと、「デジカメの写真」を紹介するページへのリンクを作ったとします。
 「自作イラスト」、「デジカメの写真」両ページとも、フレームを活用した2分割のページです。
「自作イラスト」は、「a01.html」「a02.html」で構成され、
「デジカメの写真」は、「b01.html」「b02.html」で構成されているとします。
 そして、フレームページは「frame.html」です。

「contents.html」
「frame.html」
「a01.html」
「a02.html」
「b01.html」
「b02.html」

 上記のhtmlファイルは、すべて同一パスに存在するとします。
 フレームページは一つだけです。

 以上を踏まえていただいた上で、もう一度ご質問させていただきたいのですが、

 「contents.html」から、「自作イラスト」へのリンクをクリックした時に、「frame.html」に「a01.html」「a02.html」という構成で表示させ、「contents.html」から、「デジカメの写真」へのリンクをクリックした時に、「frame.html」に「b01.html」「b02.html」という構成で表示させることはできるのでしょうか?

A 回答 (5件)

ちょっと違う解決方法ですが、frame2.htmlを作って、


frame.htmlは、「a01.html」「a02.html」を表示
frame2.htmlは、「b01.html」「b02.html」を表示
というようにする方法はいかがでしょう?
    • good
    • 0
この回答へのお礼

今回お世話になっております質問の“肝”は、まさにそこなのです。
「フレームhtml」を分けずに、何とか処理できないかということなんです。
やはり無理なのでしょうか?
よろしくお願い申し上げます。

お礼日時:2001/11/25 22:23

こんばんわ。


無理だと思います。

フレームはお盆のような物で、且つ載る物は指定しなくては、いけません。
よって「frame.html」に「a01.html」「a02.html」を載せるようにしてあれば、他の物(「b01.html」「b02.html」)は載りません。

ですので、別なお盆を「b01.html」b02.html」の為に、用意してあげましょう。
例えば「frame-b.html」というお盆を作り、「b01.html」b02.html」を載せてあげれば、ya5maaさんの作りたいページが出来るはずです。

   (._.)
「contents.html」→「自作イラスト」frame.html
    ↓
「デジカメの写真」frame-b.html

もし、私が勘違いしているようでしたら、補足ください。
それでは、良いページを作成されることをお祈りしま~すっ!(^^)/~~
    • good
    • 0

こんばんは。


つまり、フレーム割りを定義したページを使い回す。。。
ということでしょうか?
んん~。htmlでは、ちょっと思いつかないですね。
JavaScriptで、フレームを定義したページを作っちゃえばできますが。。

フレームの定義だけなら少ないソースですむので、そんなには面倒じゃないですね。でも、コレだとフレームのページ自体がイナライ。。。
ちょっとコレ↓を同じディレクトリに置いて試してみてください。
フレームの分割を変えたいのだったら、それも制御するようにもできます。
========================================
<html>
<head>
<title>frametest</title>
<script language="JavaScript">
<!--
function fmake(f1,f2,ttl)
{
ya5 = window.open();
ya5.document.write('<html>\n<head>\n<title>'+ttl+'</title>\n');
ya5.document.write('</head>\n<frameset cols="50%,50%">\n');
ya5.document.write('<frame src="'+f1+'.html" name="left" noresize>\n');
ya5.document.write('<frame src="'+f2+'.html" name="right" noresize>\n');
ya5.document.write('</frameset>\n</html>');
ya5.document.close();
}
//-->
</script>
</head>
<body>
<a href="JavaScript:fmake('a01','a02','自作イラスト');">自作イラスト</a>
<a href="JavaScript:fmake('b01','b02','デジカメの写真');">デジカメの写真</a>
</body>
</html>
============================================

この回答への補足

こんなに長い解答本当にありがとうございます。
さっそく試させていただきました。
自分のイメージにかなり近いものでした。
この教えていただいたものに、
・新しくウインドウが開かれてリンクページが開かれましたが、現在のウインドウでリンクページを開く方法
・ブラウザのアドレスバーに任意のアドレスを記載する方法
はございますでしょうか?
これができますと完全に自分のイメージと同じホームページが作ることができます。
ご面倒とは存じますが、なにとぞよろしくお願いいたします。

補足日時:2001/11/26 06:26
    • good
    • 0

え、?こういうので良かったんですか?



・・、ブラウザのアドレスバーに、というのは、
ちょっと無理(というか知らない)ので、formで作ってみました。
ちょっと、ソースとにらめっこしてください。。

内容が増えているのは、functionが、二つあるから、
function fmakeが、リンクをクリックしたときに使う方。
function fmake2が、アドレスを入力するヤツです。

http://www.yahoo.co.jp/
http://www.goo.ne.jp/
とか入力してみて下さい。

私もアマチュアなので、間違いがありそうですが。。

<html>
<head>
<title>frametest</title>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<META http-equiv="Content-Script-Type" content=text/javascript>
<script language="JavaScript">
<!--
function fmake(f1,f2,ttl)
{
document.open();
document.write('<html>\n<head>\n<title>'+ttl+'</title>\n');
document.write('</head>\n<frameset cols=\"50%,50%\">\n');
document.write('<frame src=\"'+f1+'.html\" name=\"left\" noresize>\n');
document.write('<frame src=\"'+f2+'.html\" name=\"right\" noresize>\n');
document.write('</frameset>\n</html>');
document.close();
}
function fmake2()
{
f1 = document.form1.t1.value ;
f2 = document.form1.t2.value ;
if ((f1=="" ) || (f2=="")){alert("両方にURLアドレス\n\nまたはファイル名を入力して下さい");}
else{
document.open();
document.write('<html>\n<head>\n<title>ココにタイトル</title>\n');
document.write('</head>\n<frameset cols=\"50%,50%\">\n');
document.write('<frame src=\"'+f1+'\" name=\"left\" noresize>\n');
document.write('<frame src=\"'+f2+'\" name=\"right\" noresize>\n');
document.write('</frameset>\n</html>');
document.close();
}
}
//-->
</script>
</head>
<body>
<a href="JavaScript:fmake('a01','a02','自作イラスト');">自作イラスト</a>
<a href="JavaScript:fmake('b01','b02','デジカメの写真');">デジカメの写真</a>
<hr>
※ファイル名には、拡張子も付けて下さい。
<form name="form1">
左のページURLorファイル名 : <input type="text" size="50" name="t1"><br>
右のページURLorファイル名 : <input type="text" size="50" name="t2"><br>
<input type="button" value="入力してクリック!" onClick="fmake2();">
<input type="reset" value="リセット">
</form>
<hr>
</body>
</html>

この回答への補足

 現在のウインドウでリンクページを開く方法ありがとうございました。
 そして、ブラウザのアドレスバーを制御するのは無理なんですね。
 申し遅れましたがアドレスバーに表示させておきたいのは「frame.html」 なのです。(ブラウザの「お気に入り」の対策として)
 そこで「contents.html」で引数を「frame.html」に渡し、「frame.html」で処理をすれば、アドレスバーに「frame.html」が表示されると思うのです。
 ブラウザの「お気に入り」などから「frame.html」を直に読み込んだときは「c01.html」と「c02.html」 が表示され、「contents.html」からきたときはそれに応じた制御をする。
 このようなことが可能でしょうか?
 またご面倒をおかけいたしますがなにとぞよろしくお願い申し上げます。

補足日時:2001/11/26 17:41
    • good
    • 0

ブラウザのアドレスバーの内容書き換え・・・というのは、


たぶん。無理だと思います。値を取得するだけならできそうですけど。
かなりできそうなんですけどね。お気に入り、ということを考えると、
frame.htmlを呼び出さないと駄目ですよね。
今までのは、サーバー上にないページをJavaScriptでつくっていたので。。

いろいろ試していたら、こういう方がいいんじゃないかなって思ったのを、
載せてみます。少しシンプル?になったかな?
判定して、とやろうと思ったんですが、止めました。(上手く動かなかった。。)

ソースを見ていただければ分かると思いますが、
一度、frame.htmlで、ページを読み込んでから切り替えます。
オフラインとオンラインではだいぶ動作が違うと思います。
ので、読み込むのは、軽いページ(contents.htmlへのリンクだけとか)
がイイと思いますが。

frame.htmlにジャンプして、その内容を書き換える。という一連の動作、
はできませんでした。またしても新しいウィンドウが開きます。

最初からフレームを使ったページがあって、他の部分を複数変える
というのなら簡単にできるんですけどね。。。

■contents.html
======================================================================
<html>
<head>
<title>contents</title>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<META http-equiv="Content-Script-Type" content="text/javascript">
<script language="JavaScript">
<!--
function fchange(f1,f2,ttl)
{
ya5 = window.open("frame.html","_blank");/*_topにするとたぶん×*/
ya5.parent.left.location.href = f1 ; /*leftは、frame.htmlで定義したname*/
ya5.parent.right.location.href = f2 ; /*rightも同様*/
ya5.top.document.title = ttl ; /*タイトルの書き換えです*/
}
//-->
</script>
</head>
<body>
<a href="JavaScript:fchange('a01.html','a02.html','自作イラスト');">自作イラスト</a>
<hr>
<a href="JavaScript:fchange('b01.html','b02.html','デジカメの写真');">デジカメの写真</a>
<hr>
<a href="frame.html">frame.htmlへ</a>
</body>
</html>
======================================================================
■frame.html
======================================================================
<html>
<head>
<title>frame</title>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<META http-equiv="Content-Script-Type" content="text/javascript">
</head>
<frameset cols="50%,50%">
<frame src="c01.html" name="left" noresize>
<frame src="c02.html" name="right" noresize>
</frameset>
</html>
======================================================================

この回答への補足

ありがとうございます。
どうしても新しいウィンドウが開いてしまうんですね。
それでしたら、せめて元のウインドウを閉じることはできますでしょうか?
何回も、何回も申しわけありません。
よろしくお願いいたします。

補足日時:2001/11/28 03:49
    • good
    • 0
この回答へのお礼

ウインドウを閉じるのは無理の用ですね。
長々とおつきあいありがとうございました。

お礼日時:2001/12/02 04:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!