您的位置:首页 > 其它

RegisterStartupScript和RegisterClientScriptBlock的异同

2010-03-22 20:33 489 查看
RegisterStartupScript和RegisterClientScriptBlock最主要的差异在于前者将脚本放到</form>标签之前,而后者将脚本放到<form>

标签之后。那么,这两种情况有什么异同呢?实际上有很多的不同,让我们开一下。

举例如下:Page上有一个Textbox,我们需要使页面加载的时候,焦点自动放到该Textbox上,使用RegisterStartupScript的方法如下

Page.ClientScript.RegisterStartupScript(Me.GetType(), "Testing", "document.forms[0]['TextBox1'].focus();", True)

很好,这个代码工作正常!因为在脚本执行的时候,页面上已经有了Textbox1。但是如果我们换成使用RegisterClientScriptBlock会
是如何呢?请看下面的代码:

Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "Testing", "document.forms[0]['TextBox1'].focus();", True)

这样,焦点不会自动放到Textbox1上,而且页面上会有一个脚本错误的提示出现。造成这个问题的原因是因为这个脚本执行的时候
浏览器并没有把Textbox1加载到页面上,所以脚本找不到Textbox1这个tag。

将Javascript放到单独的文件中(.js)

我们非常推荐将Javascript放到单独的文件中的使用方法。只要你把此.js文件放到project里面,都可以使用刚才提到的方法在页面加载时,
将此文件加载执行。例如:

Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript", "MyJavaScriptFile.js")

这种方法能够保证在执行javascript脚本的时候,所有的页面元素都已经正确加载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐