在C#代码中经常需要动态的在前台页面执行javascript脚本,一般主要用到三种方法:Response.Write;RegisterStartupScript和RegisterClientScriptBlock,之前对三者的区别一直没仔细研究,今天是第一次写博客,就先说说他们吧……
Response.Write方法,可以将内容直接输出到页面中,但会输出到页面最前端,此时如果输出的是javascript脚本的话,可能会导致样式表失效或浏览器发生错误等不可预知的问题。
RegisterStartupScript和RegisterClientScriptBlock都是Page类中ClientScript属性的一个方法,是原型相同功能类似的两个方法,区别在于输出脚本在页面中的位置不同。先来看看微软对这两个方法的描述
RegisterStartupScript
RegisterClientScriptBlock
RegisterClientScriptBlock在Page对象的元素开始标记之后立即发出客户端脚本,RegisterStartupScript则是在Page对象的元素的结束标记之前发出该脚本。所以如果你的脚本需要跟页面对象进行交互的话,推荐使用RegisterStartupScript。
在页面源代码中显示的位置如下:
RegisterClientScriptBlock一般返回的是客户端函数的封装,而RegisterStartupScript返回的函数在document装载完成后会执行。两个方法在客户端呈现代码位置不同,RegisterStartupScript在</form>之前,RegisterClientScriptBlock在<form>之后。