1

私のマスター Web ページには、標準アラートをカスタム jQuery ダイアログ ボックスで上書きする JS コードが含まれています。

<script type="text/javascript" language="javascript">
        window.alert=function(alertMessage)
        {
          $.msgbox(alertMessage, {type: "info"});  
         }             
</script>

default.aspx Web ページの onLoad メソッドで、アラート スクリプトを登録して表示しようとしています。

 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "InvalidPassword",
                "alert(\"Your login attempt was not successful. Please try again.\");",
                true);

残念ながら、うまくいきません。アラート ボックスをオーバーライドする JS コードを削除すると、すべて正常に動作し、アラート ボックスが表示されます。オーバーライド JS は正しいです。クライアント側でアラート js を実行すると正常に動作しますが、サーバー側からコードを実行しようとすると動作しません。

誰が問題がどこにあるのか説明できますか?

4

2 に答える 2

3

aspx ページの page_load イベントから実行しようとすると同じ問題が発生しますが、body onload イベントから実行すると機能します。window.alert オーバーライドが実行される前に page_load イベントが発生するため、これが発生していると思います。

bodyタグでこれを試してください:

<body onload="alert('Your login attempt was not successful. Please try again.');">  

そしてjQuery:

$(function () {

        window.alert = function (message) {
            $('#dialog').text(message).dialog();
        }

 });

ところで、jQuery UI ダイアログ プラグインを使用しました。

于 2010-09-10T12:57:39.773 に答える
0

わかりました、どこに問題があるかわかりました。RegisterClientScriptBlock に登録されたコードが別の JS コードを参照する場合、Web ページを完全にロードする必要があります。RegisterClientScriptBlock に登録された JS は、Web ページが完全に読み込まれたかどうかに関係なく、ブラウザに読み込まれるとすぐに実行されたようです。そのため、Web ページが完全に読み込まれた後にコードを実行する必要があります。以下のjQueryイベントを使用して見つけることができます

  $(document).ready(function() {



  });

完全なコードは次のようになります

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "InvalidPassword",
                    "$(document).ready(function() {alert(\"Your login attempt was not successful. Please try again.\");})",
                    true);
于 2010-09-10T12:58:41.720 に答える