繁体   English   中英

RegisterClientScriptBlock混乱

[英]RegisterClientScriptBlock confusion

我的主网页包含JS代码,以使用自定义jQuery对话框覆盖标准警报。

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

在default.aspx网页的onLoad方法中,我试图注册并显示警报脚本

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

不幸的是,它不起作用。 如果我删除覆盖警报框的JS代码,则一切正常,将出现警报框。 重写JS是正确的,如果我在客户端执行警报js,它可以正常工作,但是,如果我尝试从服务器端执行代码,则它不起作用。

谁能解释问题出在哪里?

当我尝试从aspx页面的page_load事件运行它时,我遇到了同样的问题,但是当我从body onload事件运行它时,它起作用了。 我认为发生这种情况是因为page_load事件发生在window.alert重写有机会运行之前。

在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对话框插件。

好的,我发现问题出在哪里。 如果在RegisterClientScriptBlock中注册的代码引用了另一个JS代码,则我们需要完整加载网页。 似乎在RegisterClientScriptBlock中注册的JS在加载到浏览器中时会立即执行,无论网页是否完整加载。 因此,我们需要在网页完全加载后执行代码。 我们可以使用下面的jQuery事件找到它

  $(document).ready(function() {



  });

完整的代码如下所示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM