- - PR -
ShowModalDialog
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-07-04 14:02
VS2005でWebの開発をしています。
親画面から子画面をモーダルで表示したいのですが、うまくいきません。 ’フォーカスをコントロールに移動できません。コントロールは表示されていない、使用できない状態、またはフォーカスを受け入れない種類です。’ というエラーのダイアログが出てしまいます。 ソース内でJavascript文字列を作成し、Response.writeしています。 Dim strPopupScript As String = "" strPopupScript &= "<script language=javascript>" & vbNewLine strPopupScript &= "<!--" & vbNewLine strPopupScript &= " var w = window.showModalDialog('../../Components/Kogamen.aspx');" & vbNewLine 'strPopupScript &= " w.focus();" & vbNewLine strPopupScript &= "// -->" & vbNewLine strPopupScript &= "</script>" & vbNewLine Response.Write(strPopupScript) ご存知の方アドバイスをお願いいたします。 _________________ | ||||
|
投稿日時: 2007-07-04 14:52
すみません、つけたしです。
エラーはInternet Explorerのスクリプトエラーで、メッセージボックスで表示されます。 | ||||
|
投稿日時: 2007-07-04 15:23
このサーバサイドのコードが動作するタイミングに問題があるのかも知れません。
ブラウザで出力されたソースを確認してみましたか? クライアントサイドスクリプトを出力するときには Response.Write ではなく、RegisterClientScriptBlock メソッドを使う方が無難です。 これを使ってみてはどうでしょうか? それと、w.focus() って何のために書いてるんでしょう? | ||||
|
投稿日時: 2007-07-04 17:33
KI様ありがとうございます。RegisterClientScriptBlockで実行してみましたが、結果は同じでした。
スクリプトは以下のように出力されています。 <script language=javascript> <!-- var w = window.showModalDialog('../../Components/Kogamen.aspx'); // --> </script> それと、w.focus()は以前のソースの名残です。コメントになってる部分です。紛らわしくてすみません。 >サーバサイドのコードが動作するタイミングに問題 とはどういうことでしょうか?どのように検証できるものでしょうか? | ||||
|
投稿日時: 2007-07-04 18:19
このコードの前後に alert('hoge1'); とか入れてみるとどうなります? | ||||
|
投稿日時: 2007-07-04 18:33
すみません。RegisterClientScriptBlock を使ってもダメなら関係ないです。 Response.Writeでスクリプトを出力すると、 そのVBのコードが実行されたときにすぐに出力されるので、 そのコードを書いてある場所によっては、変な埋め込まれ方になってしまう 可能性があると思って書きました。 普通にHTMLファイルを作って、 var w = window.showModalDialog('適当なURL'); と書けば動作するのですよね? まず、(まるくさんが提示してくださっている方法もそうですが) どの行でエラーが出ているかを確認することが必要ではないでしょうか。 | ||||
|
投稿日時: 2007-07-04 18:55
モーダル画面の表示はされるけれども「エラーが出る」と言うことではないのですか?
そうであれば親画面の呼び出しではなく 'Kogamen.aspx'に問題があるように思いますが… | ||||
|
投稿日時: 2007-07-04 19:45
>まるく様、KI様
ありがとうございます。 このコードの前後に alert('hoge1'); を入れて実行したところ、 1.hogeメッセージ 2.スクリプトエラーのメッセージ 3.kogamen.aspxの表示 4.hogeメッセージ となりました。 >よっし〜。様 ありがとうございます。 window.open()で子画面を開いたときは問題なく動作します。 おっしゃられたとおりkogamen.aspxを調査してみます。 |