
2年位前までは問題なかったのですか、
とあるぺージーでJavascriptでdocument.writeで計算結果を出すページがあります。
15年ほど前にJavascriptもろくにわからず、作ったのですが、
onclick=history.back()で元の計算入力画面に戻らず、googleの検索結果まで戻ってしまいます。
ブラウザの解釈が違うことになったのかもしれませんが、元の計算入力画面へ戻すにはどうしたらよいでしょうか?
document.write ("<br>","<input type=button value=もう一度計算する! onclick=history.back()>","</br>");
作りがめちゃくちゃなことは否定しませんが、どうぞこの低能な私にアドバイスお願いします。
そのページ(私のページなのでリンクを書きます)
http://delorean2.cool.coocan.jp/
No.3ベストアンサー
- 回答日時:
No2です
Location.replace(url);
で、直接指定しても動作しませんか?
https://developer.mozilla.org/en-US/docs/Web/API …
あるいは、念のためにタイムスタンプをクエリに追加しておくとか…
まぁ、わざわざ遷移する必要も無いような内容の印象ですので、No2の3)のような解決法が簡単そうな気もしますが…
【 表示切替の一例 】
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<style type="text/css">
.page { padding:1em; background-color:#FFC; }
.page.hide { display:none; }
.trigger{ margin:16em 0 1em 1em; }
</style>
<script type="text/javascript">
/* 表示の切り替え */
document.addEventListener("click", (e)=>{
let t = e.target;
if(t.nodeName == "INPUT" && t.classList.contains("trigger")){
document.querySelectorAll(".page").forEach((el)=>{
el.classList.toggle("hide");
});
}
});
</script>
</head>
<body>
<div class="page">
<h4>◇ 入力の表示</h4>
<input type="button" class="trigger" value="計算結果へ" />
</div>
<div class="page hide">
<h4>◇ 結果出力の表示</h4>
<input type="button" class="trigger" value="戻る" />
</div>
</body>
</html>
注) IEはアロー関数やforEachに未対応なため動作しません。
(記述法をかえることで対応は可能)
Location.replace(url)試したのですが、駄目でした。
せっかく書いていただいた文はちょっと理解できません。
少し勉強しないとダメかもです。
ひとまずありがとうございました。
No.2
- 回答日時:
こんにちは
理解なさっているかどうかわかりませんが、計算結果の表示には「ページを遷移」しているわけではなく「文書を上書きで書き直す」という方法になっています。
ですので、ブラウザのアドレスバー内の表示は変わっていないはずと思います。
これでは履歴には残らないだろうと思って簡単に試してみたところ、ブラうザによって反応が異なるようです。
手元のIE、Fxでは戻れるようですが、Chromeは反応しません。
対処法としては、
1)きちんと遷移して、履歴に残るようにする
2)history.backではなく、reloadやlocation.hrefで再ロードさせる
3)同一ページ内で処理するのであれば、結果を上書き(=元の内容が消去される)せずに、タブ表示などと同様に表示/非表示の切り替えで対処する
などの方法をとることで、一応、目的は達せられるのではないかと思います。
>作りがめちゃくちゃなことは否定しませんが、~~
「作りがめちゃくちゃ」であれば、思うように動作しなくても仕方がないのではないでしょうか?
もしそうなのなら、そのあたりを「めちゃくちゃ」ではなくすることから始めた方が宜しいかと。
回答ありがとうございます。
確かにブラウザによって挙動が違い、
reloadを使うとクロームブラウザでは今く動くけど、EdgeではNG。
location.hrefだとうまくいきません。
その当時はフレーム内で、別のhtmで動かしていたのでうまくいっていたのですが。。。
今フレーム動かないみたいだし。
作りは良くないですが、時代が更に悪くした部分もあります。
場当たり的でも動けばと思ったのですが、クロームとEdgeで両立させるにはこのままでは無理かもしれません。
参考になりました。
No.1
- 回答日時:
history.back()はこのコードが実行されるWebブラウザの画面遷移の履歴で1つ前に戻る、、、つまりWebブラウザのウィンドウ上部などにあるBackボタン(←ボタン)を押すのと同じです。
お使いのWebブラウザでBackボタンを長押しするなどして表示される履歴の1つ前がGoogleの検索結果画面になっていませんか?
つまりご自身が「1つ前の画面」と思っておられる画面はURLを直接入力して表示した画面であるため画面遷移の履歴になっていないとかです。
参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java-jspの画面入力値保持について
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
アドレスバーに引数を表示させ...
-
location.hrefでページ切替時の...
-
C# ログイン画面からメイン画面...
-
画面を隠す・消す方法を教えて...
-
ハイパーリンクでサーブレット...
-
【JavaScriptわからない】1クリ...
-
VC++にて、コンソールを二画面表示
-
[VB6]画像切り取り
-
画面遷移を行わずに同一ページ...
-
Cookieが消える?
-
このサービスの仕組みが知りた...
-
子画面から孫画面をポップアッ...
-
Strutsでのセッション保持方法...
-
HTMLをC#で操作したい
-
JSPで画面を更新するには
-
ServletからHTMLページへの遷移...
-
遷移元を判定したい!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java-jspの画面入力値保持について
-
三菱GOTの画面切り替えについて
-
ServletからServletへの値渡し
-
セッション切れでのリクエスト...
-
C言語で今まで表示していた画面...
-
ServletからHTMLページへの遷移...
-
java初心者です。 画面Aで情報...
-
Javaプログラミングの質問にな...
-
登録後、呼び出し元ページに戻...
-
system("cls")について
-
【swing】ボタンクリックにより...
-
コンボボックスの値が画面移動...
-
遷移元を判定したい!
-
C# ログイン画面からメイン画面...
-
peek()の機能が使えれば・・・
-
ASP.NET 画面遷移前の状態を保...
-
Sessionがnullになりません。
-
ブラウザアドレスバーからのURL...
-
画面を隠す・消す方法を教えて...
-
検索画面→結果画面→検索画面と...
おすすめ情報