Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net RegisterClientScriptBlock混淆_Asp.net_Jquery_Client Side_Registerclientscriptblock - Fatal编程技术网

Asp.net RegisterClientScriptBlock混淆

Asp.net RegisterClientScriptBlock混淆,asp.net,jquery,client-side,registerclientscriptblock,Asp.net,Jquery,Client Side,Registerclientscriptblock,我的母版网页包含JS代码,可使用自定义jQuery对话框覆盖标准警报 <script type="text/javascript" language="javascript"> window.alert=function(alertMessage) { $.msgbox(alertMessage, {type: "info"}); } </script> 不幸的是,它不起

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

<script type="text/javascript" language="javascript">
        window.alert=function(alertMessage)
        {
          $.msgbox(alertMessage, {type: "info"});  
         }             
</script>
不幸的是,它不起作用。如果我删除覆盖警报框的JS代码,一切正常,警报框就会出现。重写JS是正确的,如果我在客户端执行alert JS,它可以正常工作,但是如果我尝试从服务器端执行代码,它就不工作


谁能解释一下问题出在哪里

当我试图从aspx页面的page_load事件运行它时,我会遇到同样的问题,但是当我从body onload事件运行它时,它会工作。我认为这是因为页面加载事件发生在window.alert override有机会运行之前

在body标签中尝试以下操作:

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

顺便说一下,我使用了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);

很好的解决方案,但这种行为并不特定于RegisterClientBlockScript——javascript总是在浏览器看到它时立即执行,事实上,在处理RegisterStartupScript时,所有浏览器都会阻止所有进一步的呈现和资源请求,在这种情况下也会有所帮助。甚至它可能是异步中最简单的解决方案。脚本有关更多详细信息,请参阅:
  $(document).ready(function() {



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