这段C#调用JS的后台代码错在哪?

雄牛 2005-03-01 11:48:39
错在哪?高手帮看看,谢了.

前台:

<script language=javascript>
function test()
{
alert("in javascript function");
}
</script>



后台
Page.RegisterStartupScript("aa","<script language=javascript>test();</script>");

...全文
162 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yellowhwb 2005-03-02
  • 打赏
  • 举报
回复
你只要把
<script language=javascript>
function test()
{
alert("in javascript function");
}
</script>
写在页面的最前面,用Page.RegisterStartupScript("aa","<script language=javascript>test();</script>");就没有任何问题了,否则,由于aspx问是解释执行的,在调用test()的时候,function test()还没有被解释到,肯定会有错误的!
问道老王 2005-03-02
  • 打赏
  • 举报
回复
后台使用
Page.RegisterStartupScript("aa","<script language=javascript>test();</script>");
的好处在于

编译器是把脚本写在生成html的body或form标签之内的,会出现这样的效果:

页面内容显示完毕 再运行脚本


===》区别于


Response.Write("<script language=javascript>test();</script>");

客户端会先运行脚本,后决定是否显示body内容



但是,如果aspx文件内没有runat=server的Form ,则Page.RegisterStartupScript方法没有任何影响,也即无效。


以上结论在一次debug中偶得 ,共享之……
雄牛 2005-03-02
  • 打赏
  • 举报
回复
我知道了,错就错在前台没有加runat=server
yezie 2005-03-01
  • 打赏
  • 举报
回复
就用Response.Write("<script language=javascript>test();</script>");
rocky99261 2005-03-01
  • 打赏
  • 举报
回复
cs920正解,其实还是前台执行的!
cs920 2005-03-01
  • 打赏
  • 举报
回复
Response.Write("<script language=javascript>test();</script>");
就可以了~
雄牛 2005-03-01
  • 打赏
  • 举报
回复
up

110,541

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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