- - PR -
alertのOKボタンを押すまでの処理について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-07 20:07
初投稿になります。よろしくお願い致します。
ASP.NETでの開発を行っております。 下記のようなコードにてフォーム上でボタンを押した時にJavascriptで 警告ダイアログを表示しているのですが、OKボタンを押すまでの間 メイン画面の方で読込み処理を行っているようなのですが、それを回避 する方法は、ないのでしょうか?何卒ご教授願います。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim strScript As New System.Text.StringBuilder strScript.Append("<script language=javascript>") strScript.Append("alert('TEST')") strScript.Append("</script>") Page.RegisterStartupScript("alert", strScript.ToString) End Sub [ メッセージ編集済み 編集者: どん 編集日時 2005-10-07 20:08 ] [ メッセージ編集済み 編集者: どん 編集日時 2005-10-07 20:10 ] | ||||
|
投稿日時: 2005-10-07 20:48
.NETについては分からないのですが、「OKボタンの押下」というのはクライアント側の操作の訳で。
まず無理でしょう。 「なぜ、このような事をしたいのか?」を具体的に書いた方がよい回答もらえると思います。 | ||||
|
投稿日時: 2005-10-07 21:07
迅速な返信ありがとうございます。
実際には、ログイン画面でのパスワードが間違っていた時の エラー処理で使用しています。 Button1ボタンを押下した時にDBにアクセスし認証成功か失敗かのリターンコードを 返してもらい、失敗時にalertの処理を行おうとしています。 ※ちなみにクライアント処理であるconfirmも同様に処理を行っていますが 読込み状態にはなりません。 [ メッセージ編集済み 編集者: どん 編集日時 2005-10-07 21:09 ] | ||||
|
投稿日時: 2005-10-07 21:59
こんばんは、でっちです。
生成されたHTMLを見るとわかりますが、RegisterStartupScriptはHTMLの途中にScriptを埋め込むものです。 そのためalertを出すと、そこでhtmlの送出が中断しているとブラウザが判断し、読み込み中のように振舞います。 BODYタグのonloadでメッセージが表示されるように変更してみては如何でしょうか?
もうちょっとスマートなやり方がありそうな気もします。 ご存知の方がいらっしゃいましたら補足お願いします。 [追記] これが「スマートではない」点は、一度onloadに追加すると以後PostBackの度にメッセージが出ることです。 Page_Loadあたりで毎回Removeしてあげないといけないのが、なんか嫌ですね。 [/追記] [ メッセージ編集済み 編集者: でっち6号 編集日時 2005-10-07 22:20 ] | ||||
|
投稿日時: 2005-10-07 22:57
でっちさん、ありがとうございます。
なぜ読込み中のような動きなのか理解出来ました。 それとでっちさんのコードを参考に作成してみました。 Dim BodyControl As HtmlGenericControl BodyControl = Page.FindControl("Body") BodyControl.Attributes.Add("onload", "alert('TEST')") これだとonloadのタイミングになり、回避できました。 ただでっちさんの追記にあるようにPostBackのたびにメッセージが出ます。 Removeについて調べてみましたが未だに解決できていません。 もう少し調べてみようかと思います。 それと以前の書き込みで ------------------------------------------------------------------------ ※ちなみにクライアント処理であるconfirmも同様に処理を行っていますが 読込み状態にはなりません。 ------------------------------------------------------------------------ とありましたが、これはPage_Loadでの処理でした。 そこでPage_Load内でalertを処理したところ、スマートな動きをしたので どうにかボタン押下時の処理をPage_Loadで行いたいのですが無理でしょうか? ボタン押下時には、Page_Load処理の後にボタンクリックの処理を行っている ところまでは調査できたのですが、どのボタンを押したのかPage_Load内で 判断する方法が分かりません。 | ||||
|
投稿日時: 2005-10-08 06:54
毎回足して、不必要なときに削除するのではなく、必要なときに追加するようにすればいいのでは? _____________________________________________________________________________ □ Posted by Jitta on 2005/10/08 □ じったのノート □ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006 _________________ | ||||
|
投稿日時: 2005-10-08 08:53
setTimeoutを使うとか。
| ||||
|
投稿日時: 2005-10-08 09:22
おはようございます、でっちです。
ぐわあ!、VB.NETでしたね、申し訳ないです。 Removeというのは、Attribute.Removeメソッドのことです。 今回の例であれば、BodyControl.Attributes.Remove("onload") で削除できます。
Page_Load内でボタンクリックを判定する方法ですが、PostBack時にはクリックされたボタンのnameをキー、valueを値としてPostされるので、Request.Formを使うやり方が一番お手軽だと思います。 ところで、『Page_Load内でalert』ってどう記述されてます? 流れからするとRegisterStartupScriptっぽいのですが、私のほうで実験した限りでは、Page_Load内であろうとRegisterStartupScriptを使った場合は読み込み中のように動作しました。 |