
親ウィンドウと子ウィンドウの間でデータを共有したいと思い、下記のソースを作成しました。
親ウィンドウで任意の文言を入力し、子ウィンドウを開くをクリックすると、子ウィンドウに値が渡されます。
子ウィンドウで任意の文言を入力し、値をセットをクリックすると、親ウィンドウに値が渡されます。
しかし親ウィンドウから子ウィンドウで値を渡した後、任意の文言を入力し送信ボタンを押すと、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>
以上、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
なんだかよくわかりませんが、index.phpが出力するHTMLにwindow.onloadの処理を書かなければ良いんじゃないでしょうか。
この回答への補足
この回答へのお礼の3のindex.phpよりsub.htmlを再読み込みする際は特定の値を渡し、sub.htmlのwindow.onloadの先頭で特定の値がセットされていない場合のみwindow.openerが動作しないようにする事で回避する事ができました。
以上、よろしくお願いします。
ご回答ありがとうございます。
ご指摘のwindow.onloadを書かずに本件を実現する事は可能なのでしょうか?
処理の流れとしては下記となります。
1. 親ウィンドウ(index.html)
↓
任意の文言を入力し、「子ウィンドウを開く」で子ウィンドウ(sub.html)に値を渡します。
実現方法としては、子ウィンドウ(sub.html)でwindow.onloadを記述し、
window.openerで、親ウィンドウから子ウィンドウに値を渡しています。
↓
2. 子ウィンドウ(sub.html)
↓
親ウィンドウから渡された文言を修正し、送信ボタンを押します。
この際、修正した文言を保持する為、index.php内で子ウィンドウのテキスト欄に値を再セットした上で、子ウィンドウを再読込しています。
↓
3. index.php
↓
ここまでは予定通りの動作となるのですが、この後、index.phpによる子ウィンドウ(sub.html)の再読込時にwindow.onloadが走ってしまう為、この時点では欲しくない親ウィンドウの文字が追加されてしまいます。
↓
4. 子ウィンドウ(sub.html)
なお、上記の中で、index.phpで子ウィンドウ(sub.html)を再読み込みしているのは、子ウィンドウ内の他のところで変えたい値がある為です。
その為、例えば子ウィンドウ(sub.html)のwindow.openerは、親ウィンドウ(index.html)から開かれた場合のみ動作し、index.phpで再読込した際は動作しないように分岐させる事ができれば、3と4の間の現象が発生せず、意図した動作になるのではと思ったのですが、どのように実現すればよいか分からなかった為、ご質問させていただきました。
以上、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
javascriptのopenerでエラー
-
Javascript_submit()完了後に処...
-
WWWサーバとJavaAppletとの通信
-
openで開いた子ウィンドウで表...
-
javascriptでurlを取得
-
ブラウザの×ボタンを効かなくす...
-
window.Openをモーダルにできま...
-
子ウィンドウの「閉じる(×)」...
-
デスクトップ画面を4分割するには
-
ウィンドウの2重起動を防止したい
-
swfでポップアップを出す命令は?
-
ウィンドウの階層構造
-
VBの画面で、全ウィンドウを一...
-
1クリックでモーダルを開いてか...
-
ポップアップと作業ウィンドウ...
-
VBAで任意のウインドウのサイズ...
-
javascriptで開いたウィンドウ...
-
googleサイトにfacebookのいい...
-
子ウィンドウの存在確認
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBAで任意のウインドウのサイズ...
-
VBの画面で、全ウィンドウを一...
-
デスクトップ画面を4分割するには
-
ポップアップと作業ウィンドウ...
-
ウィンドウの2重起動を防止したい
-
1クリックでモーダルを開いてか...
-
子ウィンドウより親ウィンドウ...
-
javascriptで開いたウィンドウ...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
ウィンドウ名からウィンドウオ...
-
子ウィンドウの存在確認
-
ブラウザ(IE)からエクスプロー...
-
子ウィンドウから親ウィンドウ...
-
履歴を残さないResponse.Redire...
-
IEで新しいウインドウを開き、...
-
子ウィンドウを常に手前表示、...
-
インタネットからPDFファイルだ...
-
孫ウインドウを閉じたら親をリ...
おすすめ情報