- PR -

[ASP.NET]Javascript使用の親画面への値引渡しが上手くいきません・・・

投稿者投稿内容
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2004-08-17 11:32
こんにちは。

以下の過去ログは参考になりますでしょうか。。。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1081&forum=7
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11516&forum=7
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 2004-08-17 16:55
>えんぞ@見習さん
ありがとうございます。
Sessionは一度考えましたが、子画面で適用ボタン押下時に親画面のコントロールに
データを吐くことで動くプログラムになっているので、望んでいる動きにならなかった
記憶があります。

>Qooさん
過去ログありがとうございます。
一つ目のログのように記述してみました。
・セッションで子のデータを保持
・Scriptにて親のfunctionを呼ぶ

親のfunctionを呼ぶ事が出来ず(Scriptとしては吐かれていますが、動いてない?)断念しました
二つ目のログの動きと現状のコードはあまり変わりませんでした。
スクリプトは図れています。
実際実行後の子画面のソース上では
window.opener.document.MainForm.textbox.Value='子画面の値';
となってました。
又親画面のテキストボックスに変化(何か書き込まれた)場合の処理も動いている事から
吐き出すことは吐き出してるようです。
ただし、""をですが^^;
なぜ子画面の値が上手く渡らないのかがわかりません・・・。

Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2004-08-17 18:30
こんにちは。

うーん、なぜなのでしょうねぇ。

window.opener.document.MainForm.textbox.Value='子画面の値';
の前後に window.alert()を入れて動かした場合はどうなりますか?

また、'子画面の値'を固定の値('TEST'等)を入れて動かした場合は?

(親画面のテキストボックスに何か書き込まれたときの処理は、一旦
無効にして試してみてください)

それでも渡らない場合は、必要最低限だけ切り出して実験プログラムで
試してみる、とか???
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 2004-08-18 10:19
>Qooさん
Qooさんの方法を試してみました。

1.window.alert()を入れて動かした場合
きちんと設定した子画面の値が表示されました

2.固定値を入れて動かした場合
やはり値は親画面に渡っていません。

>(親画面のテキストボックスに何か書き込まれたときの処理は、一旦
無効にして試してみてください)
これは、テキストボックスに変化があった場合にそのテキストボックスから値を取り出して
処理を行うのですが、""が入ってる状態です。

んー、なぜ渡らないのか不思議でしょうがありません。
でも、この処理がこのアプリでは重要な役割を担ってるのではずすこともできず
途方にくれております・・・。


焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2004-08-18 10:39
焼きそばです。

もしかしたらですが、
window.opener.document.MainForm.textbox.Value
ではなくて
window.opener.document.MainForm.textbox.value
ではないですか?

当初はvalueって書いてますね^^;

[ メッセージ編集済み 編集者: 焼きそば 編集日時 2004-08-18 10:42 ]
きち
常連さん
会議室デビュー日: 2003/12/17
投稿数: 41
投稿日時: 2004-08-18 10:58
サンプル作って色々試しましたが原因が発見できませんでした。

私も焼きそばさんの指摘されている「Value」が気になっていたのですが実際のプログラムと掲示板に書いたプログラムが違っているのでしょうか?最初のほうで「jabascript」という書き間違いもありましたし。確かに「Value」だと値を渡すことが出来ません。
原因がこれでもなかったらやはりQooさんのおっしゃった「必要最低限だけ切り出して実験プログラムで試してみる」という方法が一番早くて簡潔だと思います。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-08-18 11:25
>「必要最低限だけ切り出して実験プログラムで試してみる」

まずはHTMLファイルで実験するのがよいでしょう。

「jabascript」「window.opener.MainForm」「Value」..

これらはクライアントサイドの問題であり、HTMLファイルの実験でクリアできるはずです。

あと、IEの [インターネット オプション]で [スクリプトのデバッグを使用しない]をオフに
すると幸せになれます。
http://www.microsoft.com/japan/msdn/library/ja/vsdebug/html/vxtskDebuggingClient-SideScript.asp
すなめり
常連さん
会議室デビュー日: 2003/01/29
投稿数: 37
お住まい・勤務地: 横浜
投稿日時: 2004-08-18 12:28
ちょっと気になったので、簡単なhtmlでテストしてみました。

親画面(oya.htm)
コード:
<HTML>
<HEAD>
</HEAD>
<BODY>

<FORM id="MainForm">
<INPUT TYPE="TEXT" id="textbox">
<INPUT TYPE="button" value="open!" onClick="return window.open('./ko.htm')">
</FORM>

</BODY>
</HTML>



子画面(ko.htm)
コード:
<HTML>
<HEAD>
</HEAD>
<BODY>
<script>window.opener.MainForm.textbox.value = 'TEST'</script>
</BODY>
</HTML>



IE6で動作確認してます。
上記2ファイルを作成し、oya.htmを開いて「open!」ボタンをクリックすると
子画面が開き、同時に親画面のtextboxに「TEST」と表示します。

まずはお詫び。documentは不要でした。
確認もせずに書き込みしてしまって、申し訳ありません。

このサンプルでは、ちづるさんが意図していた操作と違って子画面でボタンを押すという
操作はありませんが、子画面が再描画されたタイミングで親画面に値を渡すという所を
実験するためにこういう形にしてみました。

スキルアップ/キャリアアップ(JOB@IT)