在以前的编程中,经常喜欢用Response.Write(<script>alert('警告!')</script>)这样的方法去向页面注册Javascript事件,又见过ClientScriptManager.RegisterStartupScript()的方法去向页面注册Javascript事件。一直不知道区别在何处。今天无意看了一下生成后的HTML源代码,原来Response.Write方法是直接想页面发送这段文字,在DOM树还没有形成的时候。
也就是:
<script>alert('警告!')</script>
<html>
<body>
</body>
</html>
显然这不符合规范,所以应当用ClientScriptManager.RegisterStartupScript()的方法去注册Javascript事件,而
ClientScriptManager.RegisterClientScriptBlock()与
ClientScriptManager.RegisterStartupScript()这两个方法都可以注册Javascript事件,他们的的区别就是,前者在<form>标签后立即注册这个Javascript事件,而后者是在</form>结束标签前才注册Javascript事件,这对那些即将创建的DOM元素提供了注册方法。(注:意思就是,某些DOM元素是动态添加进去的,若Javascript在先DOM元素创建前就已经存在,那么引用不到。)