当前位置: 代码迷 >> ASP.NET >> Page.RegisterStartupScript的解释,该如何处理
  详细解决方案

Page.RegisterStartupScript的解释,该如何处理

热度:2426   发布时间:2013-02-25 00:00:00.0
Page.RegisterStartupScript的解释
谁能帮我解释下:
Page.RegisterStartupScript("","<script language='javascript'>window.alert('弹出对话框')</script>")与
Response.Write("<script>alert('弹出对话框')</script>")的区别? 

我知道的是:Response.Write方法会弹出一个对话框,并且点击后会刷新整个页面(要回发到服务器)。 Page.RegisterStartupScript是注册脚本,是不是不用回发到服务器?它比Response.Write方法好在哪里,不好又在那里?

------解决方案--------------------------------------------------------
Response.Write("<script>");输出在文件头部,一打开就执行。
而RegisterStartupScript返回得函数在document装载完成后会执行,类似于我们平时所说的body onload="f()"里面的函数;
====
还有就是这两个都无所谓发回到服务器不发回到服务器之说,他们都是从服务器返回的对客户端的请求,只不过 Response.Write是放到最开头,也就是页面的<html>标签,而js是解释性的语言,<html>之前的js语句会被解释,所以说,用Response.Write的效果如下:
<script>alert('弹出对话框') </script>//遇到这句之后,就会弹出对话框。
<html>
....
而弹出对话框未点确定之前,页面什么东西都没有,点了确定之后继续解释其他的语句,所以就像回发到服务器一样,其实不是回发到了服务器。
而RegisterStartupScript就是在页面加载完之后的事情了,此时,页面已经完全呈现出来了,所以不会在刷新...
------解决方案--------------------------------------------------------
好处就是一个刷新页面 一个不刷新
------解决方案--------------------------------------------------------
看有一些网上的说法,说是用Response.Write,可能会使得页面的样式变掉(但是本人自己没有碰到过),建议用RegisterStartupScript
------解决方案--------------------------------------------------------
response.write直接在页头输出,这样就会打乱文档模型,使得页面的样式和原有样式不匹配,可以做个登录页面然后response.write("<script language='javascript'>alert();</script>");看看效果
而page.registerstartupscript()不会

------解决方案--------------------------------------------------------
RegisterStartupScript是在表单尾部加有script代码,即</form>前
RegisterStartupScript返回函数在document装载完成后会执行,类似于我们平时所说的body onload="f()"里面的函数; 
Response.Write是在文件的開頭添加script代碼
再按html的順序執行
http://www.cnblogs.com/dotnetearthworm/archive/2008/12/19/1358029
------解决方案--------------------------------------------------------
write的话页面会乱掉 输出在页面源代码第一行 导致CSS失效
  相关解决方案