location.reloadで配列が初期化される



0   名前: KEN : 2007/02/10(土) 22:54  ID:ytignfl4 sub-Cl
AページからBページを開き、Aページに用意してある配列を
Bページがopenerで受信する処理をテストしてるのですが、
location.reloadによってBページを再表示すると、Aページで
作成された配列が初期化されてしまうことを確認しました。
通常のvarで変数も試しましたが問題はありませんでした。

プログラムではlocation.reloadがどうしても必要なのですが
配列では初期化されるため、別の方法がないか探しています。
対処方法を教えてください。m(__)m


Aページ
aryData = new Array(); //配列を作成

Bページ
location.reload(); //ページを再表示するとAページの配列が初期化された
opener.aryData[0].inf.value; //データが取得できない

1   名前: Script41 : 2007/02/10(土) 22:54  ID:A3n49R0s sub-IZ
reload によって 元ページの配列が初期化されるとは考えにくいので、単に opener が取得できなくなっているのでは?

まあ、だからと言って、reload を使っている以上、自身の内部に情報を保持して引き継ぐことも出来ないと思うし、reload が必須という設計自体を見直すほうが早いかも。

あとは、フレームページを開いて、隠しフレーム内に配列を保持させておく、という方法も無くはないか・・・。(お勧めはしないけど・・・)

2   名前: miz : 2007/02/10(土) 22:54  ID:hd7zotWu sub-.G
AページとBページとが同一サイトにあるならreloadしたからといってopener情報が取れないということはないですけど。
変数名の書き間違いか、もっと別なところにエラーがあるんでは?

3   名前: KEN : 2007/02/10(土) 22:54  ID:5hkp77z/ sub-Cl
レスありがとうございました。
対応遅くなってすみません。

以下のコードでテストしてみたところでは問題ありませんでした。
なぜか、作成中のプログラムではvarはOKでもnew Array()
は消去されました。
作成中プログラムのコードをもう一度確認してみます。
ありがとうございました。

file:a.html
<html>
<head>
<script type="text/javascript">
aryData = new Array();
</script>
</head>
<body>
<form>
<input type="button" value="push" onClick="aryData.push('data1');alert(aryData[0]);">
<input type="button" value="nextPage" onClick="window.open('b.html','subWin')">
</form>
</body>
</html>

file:b.html
<html>
<head>
</head>
<body>
<form>
<input type="button" value="reload" onClick="location.reload();">
<input type="button" value="pop" onClick="alert(opener.aryData[0]);">
</body>
</html>

一覧へ戻る