• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(再)”フレームhtml”にリンクを張った場合、同時にそのフレームの中身まで指定する方法)

「フレームhtml」でリンクを張り、フレームの中身を指定する方法

このQ&Aのポイント
  • 「フレームhtml」にリンクを張り、リンク元のページから「自作イラスト」や「デジカメの写真」のページをフレーム内に表示する方法について説明します。
  • フレームを活用した2分割のページである「自作イラスト」と「デジカメの写真」のページを、リンク元のページから指定して表示することができます。
  • 具体的な手順としては、リンク先のURLにフレームの中身を指定するためのパラメータを追加することで、フレーム内に表示させることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • shiba1
  • ベストアンサー率41% (10/24)
回答No.5

ブラウザのアドレスバーの内容書き換え・・・というのは、 たぶん。無理だと思います。値を取得するだけならできそうですけど。 かなりできそうなんですけどね。お気に入り、ということを考えると、 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> ======================================================================

ya5maa
質問者

お礼

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

ya5maa
質問者

補足

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

その他の回答 (4)

  • shiba1
  • ベストアンサー率41% (10/24)
回答No.4

え、?こういうので良かったんですか? ・・、ブラウザのアドレスバーに、というのは、 ちょっと無理(というか知らない)ので、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>

ya5maa
質問者

補足

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

  • shiba1
  • ベストアンサー率41% (10/24)
回答No.3

こんばんは。 つまり、フレーム割りを定義したページを使い回す。。。 ということでしょうか? んん~。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> ============================================

ya5maa
質問者

補足

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

  • seal-papa
  • ベストアンサー率54% (96/175)
回答No.2

こんばんわ。 無理だと思います。 フレームはお盆のような物で、且つ載る物は指定しなくては、いけません。 よって「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 もし、私が勘違いしているようでしたら、補足ください。 それでは、良いページを作成されることをお祈りしま~すっ!(^^)/~~

noname#5179
noname#5179
回答No.1

ちょっと違う解決方法ですが、frame2.htmlを作って、 frame.htmlは、「a01.html」「a02.html」を表示 frame2.htmlは、「b01.html」「b02.html」を表示 というようにする方法はいかがでしょう?

ya5maa
質問者

お礼

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

関連するQ&A

専門家に質問してみよう