フレーム分割したhtmlページの、子フレームに直接リンクしたときに、子フレームのみ表示されるのを防ぐテクニックがあったと思います

(リンクは子フレームに貼られたが、表示は親フレームも含めてされる)。その方法を教えてください。
依然どこかで読んだのですがど忘れしてしまいました。たしかJacaScriptでif (top==self) {top.location.href...とか書いたような。。。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/08/31 11:26:06
  • 終了:--

回答(7件)

id:satobo_77 No.1

satobo_77回答回数344ベストアンサー獲得回数22004/08/31 11:33:40

ポイント6pt

http://www5e.biglobe.ne.jp/~access_r/hp/javascript/js_088.html

フレーム内のリンクをリンクされない方法 - JavaScript

ここにのっていたかと思います。

id:smileless

ありがとうございます。

でもこの方法だとフレームのトップページに行ってしまいますよね?

目的のページをフレームつきで表示させたいのです。

2004/08/31 12:07:36
id:aki73ix No.2

aki73ix回答回数5224ベストアンサー獲得回数272004/08/31 11:38:32

ポイント6pt

これを子フレームに埋め込んでおけば、直接開かれたときに親フレームの parent.htmを開きます

<SCRIPT LANGUAGE="JavaScript">

<!--

if(parent == self )location.href="parent.htm";

//-->

</SCRIPT>

いかがでしょうか?

id:smileless

ありがとうございます。

これだとやはり、目的のページが表示されずにトップページが表示されます。

フレームの設定ページが

index.html

だとして、

フレームを上下に分けているとします。

上の部分にはいつもheader.htmlが表示されます。

index.htmlを実行すると、

フレームの上にはheader.html、下には1.htmlが表示されます。

下には、1.htmlのほかに、2.html,3.html,4.htmlが表示されます。

例えば、3.htmlを実行したとき、単体で3.htmlが表示されますが、これをフレームつきで表示させたいのです。

2004/08/31 12:12:41
id:miyamiya3 No.3

miyamiya3回答回数17ベストアンサー獲得回数02004/08/31 11:45:48

ポイント6pt

あらかじめ、

<frameset>

<frame src=”xxx.html” name=”親フレーム名” ....>

<frame src=”yyy.html” name=”子フレーム名” ....>

...

</frameset>

と、フレーム分けをする時に直接リンクされたくないページが収まる

フレームに名前を付けておきます(半角英数文字)。

その上で、リンクされたくないページのHTML上に、以下の記述を行います。

<script language=”JavaScript”>

<!--

if(self.name != ’子フレーム名’){

location.replace(’飛ばす先のURL(トップページなど)’);

}

// -->

</script>

記述する場所は上の方でも下の方でも構いません。

( <BODY>〜</BODY>の間)

id:smileless

ありがとうございます。

これもおなじでしょうか。

飛ばす先のURLで、親フレーム付で子フレームを指定できませんでしょうか。上の私のコメントで言うと、3.htmlにするように。

もしくはリンクの指定に

ページ名

としますが、このURLの欄に、3.htmlを親フレームつきで指定できないでしょうか。

2004/08/31 12:17:08
id:f-nakajima No.4

f-nakajima回答回数16ベストアンサー獲得回数02004/08/31 12:10:02

ポイント6pt

配列を使っているので、URLにファイル名が出てしまいますが、私がSEO対策で使っているものです。

フレームのページに以下

<script language=”JavaScript”>

<!--

function SetMainPage() {

var strGetVars = location.search.split(”=”);

if(strGetVars[0] == ”?page”) {

top.main.location.href = strGetVars[1];

}

}

//-->

</script>

フレーム内に表示されるページに以下

<script language=”JavaScript” type=”text/jscript”>

if (parent.frames.length==0)

top.location=’index.html?page=hogehoge.html’;

</script>

id:smileless

ありがとうございます。

hogehoge.htmlを3.htmlにすればよいんですよね?

なぜかうまく動きませんでした。

2004/08/31 12:42:06
id:virus No.5

virus回答回数183ベストアンサー獲得回数12004/08/31 12:19:32

ポイント6pt

http://tohoho.wakusei.ne.jp/js/location.htm

そのファイルは現在ありません

top.location.href = は全体ですが、たとえばフレーム内のそのページが kodomo1 と言う名前を付けてたとすると

top.kodomo1.location.href =

でいけると思いますが?

id:aki73ix No.6

aki73ix回答回数5224ベストアンサー獲得回数272004/08/31 13:27:38

ポイント5pt

すみません、質問の意図を取り違えていました

2回目の回答ですが

4番の方の回答の応用です

(TOPページ)

(メイン1)

(メイン2)

(メイン3)

それぞれを単独で開いたときに強制的に切り替えます

ソースを直接参考にしてみてください

id:smileless

ありがとうございます。

すみません、質問の仕方もまずかったですね。

いつも親切で的確なご回答、ありがとうございます。

2004/08/31 13:31:16
id:upride No.7

upride回答回数220ベストアンサー獲得回数12004/08/31 14:04:40

ポイント75pt

フレームファイル index.html

ヘッダファイル head.html

コンテンツ1 1.html

コンテンツ2 2.html

■Index.html--------------------

<html>

<head>

<script language=”JavaScript”>

<!--

function SetMainPage() {

var strGetVars = location.search.split(”=”);

if(strGetVars[0] == ”?page”) {

frm_main.location.href = strGetVars[1];

}

}

//-->

</script>

</head>

<frameset rows=”80,*” onload=”javascript:SetMainPage();”>

<frame src=”head.html” name=”frm_head”>

<frame src=”1.html” name=”frm_main”>

</frameset>

</html>

■head.html--------------------------

<html>

<body>

<a href=”1.html” target=”frm_main”>1.html</a> | 

<a href=”2.html” target=”frm_main”>2.html</a>

</body>

</html>

■1.html------------------------------

<html>

<head>

<script language=”JavaScript”>

if (parent.frames.length==0){

top.location=”index.html?page=1.html”;

}

</script>

</head>

<body>

this is 1.html

</body>

</html>

■2.html-------------------------------

<html>

<head>

<script language=”JavaScript”>

if (parent.frames.length==0){

top.location=”index.html?page=2.html”;

}

</script>

</head>

<body>

this is 2.html

</body>

</html>

自分で動作確認しております

1.htmlで呼んでも2.htmlでよんでも

フレームが付いてきます

id:smileless

ありがとうございます。

試してみます。

2004/09/01 12:40:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません