")有什么区别吗?", "upDate": "2021-05-28T17:24:06+08:00" }

用ClientScript和Response.Write("")有什么区别吗?

minhua1983 2008-12-10 05:50:32
我一直不会用ClientScript来写js,我想问一下用Response.Write("<script>...</script>")来写的,有什么区别,我这样写会有危险吗?
...全文
1162 34 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
XiaoSanLun 2008-12-12
  • 打赏
  • 举报
回复
当然不一样了
Response.Write(" <script>... </script>")

这样输出的脚本,只能是在页面最顶部 html之外
这样做很多时候脚本会出错的!

使用 Page.ClientScript.RegisterClientScriptBlock
或者 Page.ClientScript.RegisterStartupScript

是在页面的合适位置输出脚本,例如:
protected void Page_Load(object sender, EventArgs e)
{
string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
Page.ClientScript.RegisterStartupScript(this.GetType(),“MyScript”, myScript, true);
}

这样做的好处是可以在页面的正确位置输出这一段脚本,当然不会出错啦


同意
Robin 2008-12-12
  • 打赏
  • 举报
回复
Response.Write(" <script>... </script>")会输出到第一行
ClientScript 会在from前或后
sxu_nono 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 lovehongyun 的回复:]
http://topic.csdn.net/u/20081102/17/7e316889-ae7e-4a7d-85b0-32d8b4b87213.html
可以看一下我以前回复的一帖子
[/Quote]这个是容易理解的解释了,页面上Response.Write是非常不好的做法
orain 2008-12-12
  • 打赏
  • 举报
回复
有区别,一个在顶部,一个在底部。Response.Write() 甚至是出现在 <html> 前面,对后面页面的解析影响很大。
yanrabbit163 2008-12-12
  • 打赏
  • 举报
回复
Response.Write这种方式是很多初学都用的方法,肯定的告诉你,就不应该这么用.
用Response.Write写出来的Javascript你可以把HTML源码打开看一下,在<html>的前面,如果你在页面上用了Css你可以发现这条语句可以让你的页面变的面目全非.

正确的用法是ClientScript的方式
lxl_sports 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 criedshy 的回复:]
.net中使用response.write输出js会将js放在源代码的最前面,这样就可能出现破坏网页css的效果,让css失去效果

.net中使用Page.ClientScript.RegisterStartupScript(this.GetType(), "", " <script lanuage=javascript>if(confirm('确定要交卷吗?')==false){history.back()}; </script>"); 可以解决页面变型或是css失效的问题,但是代码会继续执行后面的程序。
[/Quote]
就是这样
niitnanfeng 2008-12-12
  • 打赏
  • 举报
回复
后台注册前台脚本。
HDNGO 2008-12-12
  • 打赏
  • 举报
回复
前一种用户体验好一些,后一种会白屏~
balenoww 2008-12-12
  • 打赏
  • 举报
回复
up
weilu0328 2008-12-12
  • 打赏
  • 举报
回复
都是牛X的人啦,学习了,还有一个貌似技术总监的兄弟!以后还是少用Response.Write.
zhnzzy 2008-12-12
  • 打赏
  • 举报
回复
response.write,你ALERT的时候会发现页面一片空白,但Page.ClientScript.RegisterStartupScript不会哦
hahawuwu 2008-12-12
  • 打赏
  • 举报
回复
response.write是在页面的最上面输出结果
Page.ClientScript.RegisterStartupScript实在页面加载结束后输出结果

如果在HTML的标准是<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">的时候(VS2003的时代)那么使用response.write和Page.ClientScript.RegisterStartupScript在效果上面是没有问题的
在HTML的新的标准中
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">的时候(VS2005和以后的版本)
response.write就会报错
anncesky 2008-12-12
  • 打赏
  • 举报
回复
当然测试为了方便,response.write其实还是挺好用嘀
在这句后面一般还跟上response.end
哈俣
wuyq11 2008-12-12
  • 打赏
  • 举报
回复
ClientScript.RegisterStartupScript
这个一般是在表单开始的开始处位置添加
<form id= "form1 " ...> <!-- 这里开头添加 --〉
<script>
some code
</script>
</form>
Response.Write 一般是你写在那里就把script添加到哪里
ClientScript.RegisterStartupScript
script的位置一般没有什么影响,但是有的时候网速比较慢,整个网页没有加载玩得时候,先加载了body标签里面的 <script>那么就会先执行。但是有些对象没有加载近来,就会出现错误,说对象不存在。
通常可以<script defer= "defer " type= "text/javascript " language= "javascript "> </script>
职业经理人 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 lovehongyun 的回复:]
Response.Write会输出在最上边,你可以写个程序运行.然后浏览一下生成的html代码就明白了
Page.ClientScript.RegisterClientScriptBlock //这个会把你的脚本注册在 <form>后
Page.ClientScript.RegisterStartupScript //这个会把你的脚本注册在 </form>前
[/Quote]

同意你的观点啊,哈哈啊哈哈
lovehongyun 2008-12-12
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20081102/17/7e316889-ae7e-4a7d-85b0-32d8b4b87213.html
可以看一下我以前回复的一帖子
jiang_jiajia10 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sp1234 的回复:]
看见“response.write”这样的语句通常什么也不用说、直接把代码删除,然后告诉写它的程序员重新写。
[/Quote]
本来就应该删除这个用来调试还可以。
通常都用ClientScript在后台注册前台脚本。
wsj1983920 2008-12-12
  • 打赏
  • 举报
回复
response.write 可能会导致你的css失效哦
lovehongyun 2008-12-12
  • 打赏
  • 举报
回复
Response.Write会输出在最上边,你可以写个程序运行.然后浏览一下生成的html代码就明白了
Page.ClientScript.RegisterClientScriptBlock //这个会把你的脚本注册在<form>后
Page.ClientScript.RegisterStartupScript //这个会把你的脚本注册在</form>前
yangpeiyu 2008-12-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sp1234 的回复:]
看见“response.write”这样的语句通常什么也不用说、直接把代码删除,然后告诉写它的程序员重新写。
[/Quote]

支持!!!!
加载更多回复(14)

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧