1)あるページを読み込むとページ履歴を2ページほど戻らせた上で
2)たどりついた先のページの情報をリロードする
というJavaScriptを組んでいただくことはできるでしょうか。
http://www.hatena.ne.jp/1135160543 の質問でhistory.go(-2); という指定をして成功するところまではいったのですが、これだけだと戻ったさきのページはリロードされていないので…
新しいウィンドウを開いてそちらからコントロールすることで対応してみました。
<script>
var win = window.open(’about:blank’);
win.document.write(”<script>”);
win.document.write(”opener.history.go(-2);”);
win.document.write(”opener.history.reload();”);
win.document.write(”<¥/script>”);
</script>
<body onLoad=”history.go(-2);location.reload();”>
にしたらリロードします。とおもったら、IEとOperaではうまくいったけどFirefoxではうまくいきませんでした。とりあえず参考まで
ありがとうございます。
firefoxでダメでしたか…いや、でもそれでもつけておく価値はありそうですね。さっそく使わせていただきたいと思います。
もし 2 ページ前が編集できるファイルであるという場合であれば、そちらのページの <head></head> 内に次を加えてみて下さい。
(ただし「”」は半角のものにかえること。)
<script type=”text/javascript”><!--
function CheckLastVisiting() {
var sep = ”,”;
var now = new Date();// 現在の時刻
var tmp = document.cookie.split(sep);// Cookie から読み出し、「,」で区切る
for(var i=0; i<tmp.length; i++)
tmp[i] = eval(tmp[i]);// 数値型にする
var d = new Date(tmp[0], tmp[1], tmp[2], tmp[3], tmp[4], tmp[5]);// 前回訪問時刻
if((now.getTime()-d.getTime())/1000 > 3 ) {// 前回より三秒以上経過なら処理
document.cookie = now.getFullYear() + sep + now.getMonth() + sep + now.getDate() + sep
+ now.getHours() + sep + now.getMinutes() + sep + now.getSeconds();// 現在時刻を Cookie に埋め込む
location.reload();// 安心してリロード
}
}
onload = CheckLastVisiting;
// -->
</script>
前にページを開いた時より 3 秒より経っていたなら、ページをリロードします。(自動的に破棄される Cookie を使用。)
2 ページ前のものが管轄外のものなら……やはりウィンドウを開いて操作する以外ないと思います。
ウィンドウを開けない理由にもよりますが、
・画面外に出現する(見えない)
・処理後自動的に閉じる(すぐ消える)
という方法なら利用者はあまり気にならないかもしれません。(セキュリティソフトが反応するかも?)
詳細な回答をしていただきありがとうございます!
2ページ前のページを編集可能ですので、いまから試してみたいと思います。
ありがとうございました。
ありがとうございます。
新しいウィンドウをひらけばできるということですね。
ちょっと新しいウィンドウを開くとなると今回は使用しないと思いますが、勉強になりました。