Asp.net中的JavaScript使用之一动态创建javaScript

来源:互联网 发布:91助手 ios5软件 编辑:程序博客网 时间:2024/05/16 08:05

 

我们都知道JavaScript是运行在客户端的脚本,一般是包含在aspx页面文件中,但是在实际开发中经常会遇到这样一些问题:比如服务器端的代码需要动态生成或调用JavaScript代码,或者JavaScript代码需要调用服务器端的程序代码,这时候有些初学者就摸不着头脑了,不知怎样办才好(其实写此文的初因就是有朋友在我的qq群中问到了这个问题,因为这个问题较为常见,但是一两句话也说不清楚,所以就有了此文。)

通常境况下,js脚本不是包含在aspx中的script标签中,就是放在.js文件中然后被引用,这两点大家应该都很清楚,我就不在这里赘述了,那么假设服务器端需要动态的把js代码传送给浏览器,这该怎么处理呢?这就需要使用ClientScriptManager类来动态的创建javaScript,关于ClientScriptManager类的详细描述,大家可以参看msdn文档(http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.aspx)我在这里用msdn文档中的例子做个简单说明

 

 

 

根据实际情况我们选择调用ClientScriptManager对象的下列方法将js代码加到页面中

1RegisterClientScriptBlock
        
该方法能够把js代码加入到页面的开始处。并且如果你有多个js代码使用RegisterClientScriptBlock方法注册到客户端,则它们的调用顺序并不一定和它们的注册顺序一致,如果你非常关心这些js代码的执行顺序,请用stringBuilder把它们合并到一起,作为整体然后用该方法注册到客户端。(The RegisterClientScriptBlock method adds a script block to the top of the rendered page. Thescript blocks are not guaranteed to be output in the order they are registered.If the order of the script blocks is important, use a StringBuilder object to gather the scripts together in a single string, andthen register them all in a single client script block.

2RegisterClinetScriptInclude
   
此方法类似上面的方法,不一样的地方是它动态添加的是一个js文件的引用

3RegisterStartupScript
   
根据msdn文档上的说明这段脚本的添加到页面的时机应该在页面加载完毕之后,OnLoad事件触发之前。和上述方法一样如果你有多个js代码使用RegisterClientScriptBlock方法注册到客户端,则它们的调用顺序并不一定和它们的注册顺序一致,如果你非常关心这些js代码的执行顺序,请用stringBuilder把它们合并到一起,作为整体然后用该方法注册到客户端。(The script block added by the RegisterStartupScript method executes when the page finishes loading but before the page'sOnLoad event is raised. The script blocks are not guaranteed to beoutput in the order they are registered. If the order of the script blocks isimportant, use a StringBuilder object to gather the scripts together in a single string, andthen register them all in a single client script block

4RegisterOnSubmitStatement

此方法动态添加的js代码会在页面被提交(Submit)之前执行。

为了确保我们所添加的js代码没有重复,ClientScriptManager为我们提供了相对应的4个方法来做判断:

IsClientScriptBlockRegistered

IsClientScriptIncludeRegistered

IsOnSubmitStatementRegistered

IsStartupScriptRegistered

 

原创粉丝点击