window.onloadの実行と抑止の分岐方法
親ウィンドウと子ウィンドウの間でデータを共有したいと思い、下記のソースを作成しました。
親ウィンドウで任意の文言を入力し、子ウィンドウを開くをクリックすると、子ウィンドウに値が渡されます。
子ウィンドウで任意の文言を入力し、値をセットをクリックすると、親ウィンドウに値が渡されます。
しかし親ウィンドウから子ウィンドウで値を渡した後、任意の文言を入力し送信ボタンを押すと、index.phpで子ウィンドウの変更後の文言をテキスト欄の値をセットしたあと、
子ウィンドウのwindow.onloadが走って値を追加してしまいました(下記のソースは簡易的なもののため、子ウィンドウのテキスト欄には<input type="text">を使用しておりますが、
実際には<select multiple="multiple">を使用しているため、下記のような表示になります)。
1. 親ウィンドウから子ウィンドウにセットされたテキストの例
あああ
2. 子ウィンドウで変更した文言
いいい
3. 送信ボタンクリック
子ウィンドウのselectには下記が表示されます。
いいい
あああ
その為、子ウィンドウでsubmitした際は、window.onloadを抑止できれば良いと思ったのですが、具体的にどう記述すればよいかわかりませんでしたので、
アドバイスいただける方がいらっしゃいましたら、ご教示の程、よろしくお願いします。
また、window.onloadの抑止にこだわっているわけではありません。
上記の送信ボタンクリック時、子ウィンドウのselectの中が「いいい」と表示される方法があれば大丈夫です。
【親ウィンドウ(index.html)】
<script type="text/javascript">
<!--
function window_open() {
window.open('sub.html', null, 'width = 640, height = 480, scrollbars = yes' )
};
//-->
</script>
</head>
<body>
<form action="index.php" method="post" name="form00" id="form00">
<a onclick="window_open()" href="javascript:void(0)">子ウィンドウを開く</a>
<br />
<input type="text" name="text00" value="" />
</form>
</body>
【子ウィンドウ(sub.html)】
<script type="text/javascript">
<!--
window.onload = function() {
if(window.opener) {
document.form01.text01.value = window.opener.document.form00.text00.value;
}
}
function Set() {
window.opener.document.form00.text00.value = document.form01.text01.value;
window.close();
}
//-->
</script>
</head>
<body>
<form action="index.php" method="post" name="form01" id="form01">
<input type="text" name="text01" />
<input type="button" onclick="Set()" value="値をセット" />
<input type="submit" value="再読込" />
</form>
</body>
以上、よろしくお願いします。
補足
ご回答ありがとうございます。 早速試してみましたところ一見うまく動いているように見えました。 しかし、うまく動く時と動かない時がありました。 もしかしたらこちらの環境のせいもあるかもしれません。 OSはWin2000を使っているせいか、「送信」ボタンを押した後メールを送信してよいかの確認メッセージが出て、どうやらそれが邪魔しているようです。 ですので、この確認メッセージを出ないようにする方法か、確認メッセージが出ても子ウィンドウを閉じる事が出来る方法はありませんでしょうか?