「これはヤバかったな」という遅刻エピソード

1ページ内に2つの iframe があります。

<a href="http:ok~~" target="aaa">A</a>
<iframe name="aaa"></frame>
<a href="http:goo~~" target="bbb">B</a>
<iframe name="bbb"></frame>

(詳細略)

Aを開いて2~3度フレーム内移動して、Bを開いて2~3度フレーム内移動します。
ここでブラウザの戻るボタンを押すと、この順番の逆をたどります。
つまりBの戻りを経ないとAの戻りができません。

Aでの移動の戻りを直接やりたいのですが、
フレームごとに戻らせるようにするためには、どういう構文になるのでしょうか?

一応それぞれに、

<a Href="javascript:history.go(-1)" target="aaa">戻る</a>
<a Href="javascript:history.go(-1)" target="bbb">戻る</a>

とやってはみましたが、実行するとエラーになってしまうようです。

よろしくご回答の程お願いいたします。

A 回答 (2件)

JavaScriptは、おそらくセキュリティのために、前後に行き来する他はヒストリーを制御することが出来なくなっているようです。

更に、現在、ヒストリーの何処に居るのかさえも取得できません。そのためご希望の機能(実は良く分かっていませんが。)を実現することは困難に思われます。

そのうえで、どの程度のことまで出来そうか一例を示してみます。

機能は、

・ 行き来する回数を指定する。
  このため、例えば、戻る回数を覚えていなければなりません。

・ 大きすぎる数値を入力したときは、何も起こりません。

となっています。プログラムは以下の通りです。

--------------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>page</title>
<script language="JavaScript" type="text/javascript">
<!--
var historyLength = history.length;
var for_bk=-1;
 
function moveHistory(cnt) {//alert(0);
history.go(cnt*for_bk);
}
 
function setCount() {
var cnt=prompt("移動回数?","");
var cnt2=new Number(cnt);
if (cnt!=null && cnt!="" && cnt2!=0 ) {
moveHistory(cnt2);
}
return false;
}
 
function checkHistory() {
window.document.getElementById("lenA").value=history.length;
}
 
function changeDirect(fb) {
for_bk=fb;
}

//-->
</script>
</head>

<body onload='checkHistory();'>
<input type="button" value="ヒストリーチェック" onClick='checkHistory();'>
ヒストリー総数:
<input type="text" id="lenA" size="4">

<form name="keisan" action="">
<hr />
方向: 
<label><input type="radio" name="direct" value="-1" checked="checked" onchange="changeDirect(this.value)"><--戻る</label> 
<label><input type="radio" name="direct" value="1" onchange="changeDirect(this.value)">進む--></label>
<hr />
<label><input type="radio" name="far" value="1" onClick="moveHistory(this.value)">1</label> 
<label><input type="radio" name="far" value="2" onClick="moveHistory(this.value)">2</label> 
<label><input type="radio" name="far" value="3" onClick="moveHistory(this.value)">3</label> 
<label><input type="radio" name="far" value="4" onClick="moveHistory(this.value)">4</label> 
<label><input type="radio" name="far" value="5" onClick="moveHistory(this.value)">5</label> 
<label><input type="radio" name="far" value="6" onClick="moveHistory(this.value)">6</label> 
<label><input type="radio" name="far" value="7" onClick="moveHistory(this.value)">7</label> 
<label><input type="radio" name="far" value="8" onClick="moveHistory(this.value)">8</label> 
<label><input type="radio" name="far" value="9" onClick="moveHistory(this.value)">9</label> 
<label><input type="radio" name="far" value="10" onClick="moveHistory(this.value)">10</label> 
<hr />
<input type="button" value="戻る回数入力" onClick='setCount();'>
</form>
<hr />
<a href="http://okwave.jp/" target="aaa">ABB</a>
<iframe src="http://okwave.jp/" name="aaa" width=800 height=300></iframe>
<hr />
<a href="http://www.goo.ne.jp/" target="bbb">BBB</a>
<iframe src="http://www.goo.ne.jp/" name="bbb" width=800 height=300></iframe>
</body>
</html>
--------------------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

結構簡単なことなのかなあと思ってましたが、案外大変なことだったようです。
本当に自HPに必要かどうかももうちょっと検討して導入してみたいと思います。
わざわざ考えていただき本当に感謝いたしております。ありがとうございました。

お礼日時:2008/03/02 09:58

JavaScriptを使うならtarget指定もスクリプトに組み込まないとダメなんじゃないの?


フレームへのリンクみたいに。
JavaScriptはよく分からんのでかけないけど。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。検討してみます。

お礼日時:2008/03/02 09:51

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


おすすめ情報