【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

Aという画面に***.jsという外部ファイルにwindows.openのjavascriptを設定しています。
A→Bという画面遷移を行っているのですが、
B→Aに history.back(); にて戻る際にA画面にて入力した項目(例えばテキストボックスの値)がクリアされてしまいます。
ちなみにwindows.openのScriptを実行しない場合には項目のクリアは起こりません。

function helpopen() {
var AAA= window.open('URL', 'AAA','width=400,height=300,scrollbars=1,resizable=1');

}
上記のScriptをチェックしていたのですが、
window.open('URL', 'AAA');
とURLのみでもクリアの現象が起こってしまいます。
JavaScriptを使用した際にクリアが起こってしまう現象を回避する方法はありますでしょうか?

A 回答 (2件)

#1 の者ですが、とりあえず指摘の操作を行う最低限のソースを書いてみました。



test00a.htm
==============================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>Cash do not remain in a screen at the time of Javascript use.(Main)</title>
<div onclick="window.open('./test00c.htm');">WINDOW.OPEN</div>
<form action="./test00b.htm" name="NAMEFM"><div>
<input type="text" name="NAMAEIN">
<input type="submit" value="送信">
</div></form>
==============================

test00b.htm
==============================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>Cash do not remain in a screen at the time of Javascript use.(Back)</title>
<div onclick="history.back();">HISTORY.BACK</div>
==============================

test00c.htm
==============================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<title>Cash do not remain in a screen at the time of Javascript use.(Sub window)</title>
<div>Sub window</div>
==============================

以上でご提示の操作が行える最低限のファイルと思います。(文法としてもあっています。片っ端から省略しているので、ある意味不適切ですが、検証用という事で。)

で、上記でも現象は再現いたしますでしょうか?
当方では再現いたしません。
(消えずに残っています。)

これでも質問者側の環境ではクリアされるならば、
環境の違いも問題調査の要点となりますしが・・・。
(同一ブラウザでもいろいろ設定が違うだろうし・・・)

また、今回提示したソースでは再現しない(クリアされない)となれば、
質問者が未提示の部分がポイントと場所を絞る事が出来るのですがぁ・・・。


とにかく、とりあえず参考までに。
    • good
    • 0
この回答へのお礼

ありがとうございます。
このソースの場合は上手くいきました。
しかし、こちらの環境(ASPなのです)で実行してみたら
やはり消えてしまいます…。
拡張子をASPに変更しただけでkoutarou504さんのソースはいじってません。
(METAは少しいじりました。
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">←このように)
ASPだと消えてしまうのはなぜなのかまったくわかりません…。

お礼日時:2005/11/24 22:15

あの~、大変申し訳ございませんが、


ご質問の状況が不明というか再現しないというか・・・。

もし B が A より windows.open にて開かれて遷移しているのなら、親子関係ですから戻るという概念はないはずだし・・・。
windows.open では別途 C が開かれているなら
そこで何を行われているかも関わるかもしれませんし、
なにより何を契機に open , 遷移が行われているのかも不明です。


とりあえず、当方で質問で考えられる状態を動作してみましたが、再現しませんでした。
OS : Win XP SP2
ブラウザ : IE6, NS7.1, OP8
OPEN のきっかけ : onclickイベントを採用
画面遷移 : onclickイベントを採用し location.href に代入
戻り方1 : 遷移先からブラウザの戻るを採用
戻り方2 : 遷移先からonclickイベントを採用し history.back(); で戻る
戻り方3 : OPENされた子側からonclickイベントを採用し window.opener.history.back(); で戻る

この回答への補足

ありがとうございます。
ちょっと状況が不明でした・・・申し訳ありません。
正しくはA,B,Cの3画面あります。
Aにはonclickイベント(window.open)にてCの画面を小窓で開く設定をしています。その際に引数をC画面に渡してます。
C画面では、Aからの引数を元にDB接続し、別の値をとってきます。C画面のonclickイベントにてAにあるテキストボックスβに値を設定後、C画面を閉じるというscriptを使用しています。
これが大体のおおまかな流れです。
まず、Scriptの動きを確かめる為に、引数も何もつけず、window.open('URL', 'AAA');だけのScriptにて動きを検証してみました
Aに存在するテキストボックスαに値入力

Cのサブ画面を呼んでみる

Cはブラウザの×ボタンにて閉じる(C側のScriptは動かさない)

Aに戻り、submitにてB画面に遷移

B画面からhistory.back(); にてA画面に戻る

Aで入力したテキストボックスαの値がクリアされている

これが、今起きている現象です。

補足日時:2005/11/24 11:14
    • good
    • 0
この回答へのお礼

追記です。
B画面からAに戻る際のhistory.back(); 時に、実際AではC画面を開いているので、直前に開いたページ=Cになってしまい、Aの画面の値がクリアされてるんじゃないか、という考えもあるのですが、解決法が見つかりません・・・。

お礼日時:2005/11/24 11:35

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