ASP.net从服务器端向客户端弹出alert对话框,但不使页面变成白板

来源:互联网 发布:河北广电网络集团 编辑:程序博客网 时间:2024/05/16 17:15

   在做ASP.net的项目时,碰到在页面上输入一些数据后,然后点击提交按钮,然后服务器端校验数据,如果数据不合格,用


Response.Write("<script>alert(' 用户名不存在!')</script>")


向客户端推出一个警告窗口提示,这时候会发现,显示警告窗口的时候,在警告窗口的背面页面是一片空白,非得你按了警告窗口上的确定按钮,主页面才会显示出需要的内容。


为什么会出现一个页面白板呢?包括服务器端向客户端推出的 showModalDialog 模态窗口一样,用Response.Wrtie()输出到客户端页面,可以通过查看生成页面的源文件,就能发现是在页面的最前面加上了 alert() 或showModalDialog()js函数,这种警告窗口或模态窗口弹出来之后,将会阻止页面显示接下来的内容,所以您看到的就是一片空白,只有用户关了警告或模态窗口才会继续显示页面内容。

 

那么怎么才能让显示 alert对话框或 showModalDialog 窗口时,主页面有内容显示呢?很简单,需要让生成的 html 中alert 和 showModalDialog 处在显示内容的后面。


下面这个做法是:用Page.RegisterStartupScript()方法注册页面执行脚本,它会把注册的脚本放在Web 窗体的结尾处,即</form>标记之前


Page.RegisterStartupScript("msg", "<script>alert('用户名Unmi不存在!')</script>");
也就是 form 的内容显示完之后才执行这一段脚本--弹出警告窗口,所以页面不会空白。如果这个 WebForm 几乎包含了页面所有显示内容,那么从语义上讲也可以说是在 document 加载完后弹出警告窗口。


由此我们也能想到,如果给页面加个 window.onload 事件的处理函数,在这个处理函数中弹出警告窗口,那么不管是放在前面还是后面都不会影响到页面的显示(不会出现白板现象),因为它总是等待document加载完成后才执行的,因此我们也可以这样写:


Response.Write("<script >function window.onload() {alert('用户名Unmi不存在!');}</script>"); //这里重写了 window 的 onload 函数。

原创粉丝点击