关于C#后台调用前台js方法的问题!

liuxibei1987 2009-06-15 11:38:07
前台如下:
 <script type="text/javascript">
function test()
{
alert("OK");
}</script>

后台这样调用,我在button的onclick事件里写到
Response.Write("<script>test();</script>");
这样会报错,提示test缺少对象。。。
但是这样调用
Page.RegisterStartupScript("key","<script>test();</script>");
OK,不报错了.
这是为什么呢?

...全文
769 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxibei1987 2009-06-15
  • 打赏
  • 举报
回复
因为以前这样写过
Response.Write(" <script>alert('OK!'); </script>");
所以这次也就想照葫芦画瓢调用前台js方法,结果不行。
但是用Page.RegisterStartupScript为什么又可以捏?
gjy1606 2009-06-15
  • 打赏
  • 举报
回复
这种情况我只用过回调...不知道这样怎么用,关注中...
liuxibei1987 2009-06-15
  • 打赏
  • 举报
回复
大家来给点看法, 这里test缺少对象,难道是没找到test方法,也就是说前台中的test方法没有加载?
zhengqinyun 2009-06-15
  • 打赏
  • 举报
回复
不错....
ccb8888 2009-06-15
  • 打赏
  • 举报
回复
标准的后台脚本注册方法:
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "", "test()", true);


Response.Write(" <script>alert('OK!'); </script>");
这种方法有可能会导致CSS混乱的。。
shangfeng88 2009-06-15
  • 打赏
  • 举报
回复
如果你将test()函数定义在HTML的最底部的话
那你上面提到的两种调用方法肯定都会出错的
y82907966 2009-06-15
  • 打赏
  • 举报
回复
shangfeng88 2009-06-15
  • 打赏
  • 举报
回复
Response.Write(" <script>test(); </script>");
这句话<script>test(); </script>将被输出到html文件的最上部,
而这时候肯定还没有定义test()方法,所以肯定要提示错误的否则就是浏览器有问题了。
而这样Page.RegisterStartupScript("key"," <script>test(); </script>");
这句话<script>test(); </script>将被输出到button按钮的下面,
而这时候肯定前面已经定义了test()那当然就正确了。
运行起来看看html代码你就什么都明白了
winsongood 2009-06-15
  • 打赏
  • 举报
回复
记得如果你的页面已经有过一段类型的JS代码,直接输出没有加KEY的话好像是会有问题的,后台使用RegisterStartupScript后应该是添加了不同的KEY值去区分了,或者最简单方法,你可以查看生成后的页面源码,看看2种方式下输出的代码有什么不同就知道原因了

110,534

社区成员

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

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

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