JavaScript之事件处理(监听)函数

JavaScript之事件处理(监听)函数
JavaScript之事件处理(监听)函数

事件是用户和浏览器自身进行的特定行为。这些事件都有自己的名字,如click,,load,mouseover。用于响应某个事件而调用的函数称为事件处理函数,或者DOM称之为事件监听函数。事件处理函数有两种分配方式:在Jav aScript中或者在HTML 中。

如果在JavaScript中分配事件处理函数,则需要首先获得要处理的对象的引用,然后将函数赋值给对应的事件处理函数属性,像这样:

var oDiv=document.getElementById(“div1”);

oDiv.onclick=function(){

alert(“I was clicked”);

};

用这个分配方法,事件处理函数名称必须小写,才能正确响应事件。

如果在HTML中分配事件处理函数,则只要在HTML标签中添加事件处理函数的特性,并在其中包含合适的脚本作为特性值就可以了,如下:

用这种方法,事件处理函数的大小写都可以,所以onclick等同于onClick、OnClick或ONCLICK(建议使用标准的XHTML 代码,则事件处理函数应该全部用小写定义)。

这两个方法在当前所有流行的浏览器都可使用,但传统的做法能为每个可用事件分配多个事件处理函数。于是,IE包含了自己独有的方法,而DOM却规定了另一个方法。

(一)IE

在IE中,每个元素和window对象都有两个方法:attachEvent()和detachEvent()。顾名思义,attachEv ent()用来给一个事件附加事件处理函数,而detachEvent()用来将事件处理函数分享出来。每个方法都有两个参数:要分配的事件处理函数的名字及一个函数。

[object].attachEvent(“name_of_event_handler”,fnHandler);

[object].dettachEvent(“name_of_event_handler”,fnHandler);

在attachEvent()中,函数被作为事件处理函数添加,detachEvent()在事件处理函数列表中查找制定的函数,并移除它。例如:

var fnClick1=function(){

alert(“Clicked”);

};

var fnClick2=function(){

alert(“Also Clicked”);

};

var oDiv=document.getElementById(“div”);

oDiv.attachEvent(“onclick”,fnClick1); //添加事件

// oDiv.onclick=fnClick1; //用传统的JavaScrip t方法来添加事件

oDiv.attachEvent(“onclick”,fnClick2); //添加事件

oDiv.detachEvent(“onclick”,fnClick); //移除事件

上面的例子表明,可以为一个对象添加多个事件处理函数,它是按照添加它们的顺序进行调用的。传统方法上对事件处理函数的赋值其实被看成另一种attachEvent()的调用。上例先显示Clicked,接着显示Also Clicked。

(二)DOM

DOM方法addEventListener()和removeEventListener()用来分配和移除事件处理函数,与IE不同,这些方法需要三个参数:事件名称,要分配的函数和处理函数用于冒泡阶段还是捕获阶段。如果事件处理函数是用于捕获阶段,第三个参数为true;用于冒泡阶段,则为false。下面是语法:

[object].addEventListener(“name_of_event”,fnHandler,bCapture);

[object].removeEventListener(“name_of_event”,fnHandler,bCapture);

var fnClick1=function(){

alert(“Clicked”);

};

var fnClick2=function(){

alert(“Also Clicked”);

};

var oDiv=document.getElementById(“div”);

oDiv.addEventListener(“click”,fnClick1,false); //添加事件

oDiv.addEventListener(“click”,fnClick2,false); //添加事件

oDiv.removeEventListener(“click”,fnClick1,false); //移除事件

oDiv.removeEventListener(“click”,fnClick2,true); //无法移除事件,因为没有指明捕获阶段

与IE一样,也可以为一个对象添加多个事件处理函数。显示效果是一样的。

如果使用addEventListener()将事件处理函数加入到捕获阶段,则必须在removeEventlistener()中指明是捕获阶段,才能正确地将这个事件处理函数删除。

如果使用传统方法直接给事件处理函数属性赋值,事件处理函数将被添加到事件的冒泡阶段。

直接赋值的一个很重要的不同点是,后续对事件处理函数的赋值将清除前面的赋值:

oDiv.onclick=fnClick;

oDiv.onclick=fnDifferentClick;

起初fnClick被赋给onclick事件处理函数,然后又被fnDifferentClick替换了。

Activiti 监听器的配置使用

Activiti 监听器的配置使用 一)流程监听器的配置 此监听器的作用是记录流程的启动和结束事件日志,详细参考类 cn.bc.workflow.activiti.delegate.ProcessLogListener 用Activiti Designer打开流程图,点击空白处,在Properties的Listeners中如下配置流程的start和end两个事件: 二)任务监听器的配置 此监听器的作用是记录任务的创建、分派和完成的事件日志,详细参考类 cn.bc.workflow.activiti.delegate.TaskLogListener 用Activiti Designer打开流程图,点击要配置的任务节点,在Properties的Listeners中如下配置任务的事件监听:

如下是自动将任务分配到岗位或岗位内用户的任务监听器的配置: 详见类cn.bc.workflow.activiti.delegate.Assign2GroupUserListener,监听器在流程图中需要配置为"java class"类型,Fields参数中有两种配置方式:1)岗位名称+保存组织ID的流程变量名(全局变量),2)岗位编码。 监听器会根据配置方式先获取岗位,然后自动获取岗位内的用户信息,如果岗位内只有一个用户,就直接将任务分配给此用户,否则分配给岗位。

三)流向或网关监听器的配置 此监听器的作用是记录流向的执行事件日志,在平台中是可选的,视具体情况按需配置,详细参考类cn.bc.workflow.activiti.delegate.FlowLogListener 用Activiti Designer打开流程图,点击要配置的流向或网关,在Properties的Listeners 中类似任务监听器的方式进行配置即可:

Javascript前台捕获浏览器关闭事件,后台处理一些善后工作

Javascript前台捕获浏览器关闭事件,后台处理一些善后工作 1.使用onbeforeunload 事件捕获浏览器关闭事件 IE和火狐都支持onbeforeunload事件,但是opera不支持。 注意:不仅关闭浏览器时会触发onbeforeunload事件,刷新等事件也会触发onbeforeunload事件。 2.事件注册方法 3.使用Ajax技术向服务器异步发送需要做的善后工作 这里以登陆为例:当用户关闭浏览器时,需要把用户登陆的状态修改为‘已退出’。由于用户登陆的状态存放在服务器的数据库中,所有必需在客户端捕获浏览器关闭动作,在浏览器关闭之前,向服务器发送一个请求,当然这个的请求是异步发送的(Ajax技术);服务器收到请求后,把当前用户的登陆状态修改为‘已退出’。 function CloseBrowse()//用户关闭浏览器 { var n = window.event.screenX - window.screenLeft; var b = n > document.documentElement.scrollWidth - 20; //可以捕获点击小差和 Alt+F4 时浏览器关闭的情况,但是不能捕获在多窗口浏览模式下,用户点多窗口模式的小差关闭浏览器的情况 if (b && window.event.clientY < 0 || window.event.altKey) { var url = "Service.asmx/UpdateLoginState"; UpdateLoginState(url); } } //使用Ajax 向服务器发送异步请求,要求服务器修改登录状态 function UpdateLoginState() { var url = "Service.asmx/UpdateLoginState"; SendRequestToWebService(url); } function SendRequestToWebService(url){ createXmlhttp(); xmlhttp.open("POST", url, true); //xmlhttp.onreadystatechange = handleStateChange; xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;"); xmlhttp.send(); } //创建XMLHttpRequest对象 function createXmlhttp() {

JavaScript事件

我的记录(JavaScript事件)JavaScript 事件冒泡简介及应用实例 一、什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。 打个比方说:你在地方法院要上诉一件案子,如果地方没有处理此类案件的法院,地方相关部门会帮你继续往上级法院上诉,比如从市级到省级,直至到中央法院,最终使你的案件得以处理。 二、事件冒泡有什么作用 (1)事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元素上),它还可以让你在对象层的不同级别捕获事件。 【集中处理例子】

你好!这是一个简单事件处理程序!

计算机科学与技术系 Web 前端开发技术 11.1 事件编程(续) 1.网页访问中常见的事件 鼠标单击:例如单击button 、选中checkbo x 和radio 等元素;鼠标进入、悬浮或退出页面的某个热点:例如鼠标停在一个图片上方或者进入table 的范围; 键盘按键:当按下按键或释放按键时;页面或图像载入:例如页面body 被加载时;在表单中选取输入框或改变输入框中文本的内容:例如选中或修改了文本框中的内容;确认表单:例如当准备提交表单的内容。 事件类型:1.鼠标事件2.键盘事件3.浏览器事件

RadioButton监听事件

RadioButton使用说明 2012-01-19 RadioButton(单选按钮)在Android开发中应用的非常广泛,比如一些选择项的时候,会用到单选按钮。它是一种单个圆形单选框双状态的按钮,可以选择或不选择。在RadioButton 没有被选中时,用户能够按下或点击来选中它。但是,与复选框相反,用户一旦选中就不能够取消选中。 实现RadioButton由两部分组成,也就是RadioButton和RadioGroup配合使 用.RadioGroup是单选组合框,可以容纳多个RadioButton的容器.在没有RadioGroup 的情况下,RadioButton可以全部都选中;当多个RadioButton被RadioGroup包含的情况下,RadioButton只可以选择一个。并用setOnCheckedChangeListener来对单选按钮进行监听。 private RadioButton rB_boy; private RadioButton rB_girl; private RadioGroup rG_content; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/6c750099.html,yout.main); //RadioGroup this.rG_content=(RadioGroup)findViewById(R.id.rG_Con); //RadioButton this.rB_boy=(RadioButton)findViewById(R.id.rd_boy); this.rB_girl=(RadioButton)findViewById(R.id.rd_girl); this.rB_boy.setText("这是男"); this.rB_girl.setText("这是女"); //添加事件监听器 this.rG_content.setOnCheckedChangeListener(new OnCheckedChangeListener(){ public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rd_boy) { Toast.makeText(getApplicationContext(), "你选择的是男孩!",Toast.LENGTH_SHORT).show();

键盘监听器与鼠标监听器

键盘监听器 键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KE Y_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASC II码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual K ey Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。 VK_LEFT/VK_RIGHT 左右方向键VK_CONTROL Ctrl键 VK_KP_UP 小键盘向上VK_ATL Alt键 VK_PAUSE 暂停键VK_SHIFT Shift键 VK_NUMBER0 小键盘数字0 VK_F1 功能键F1 VK_0 数字键0 VK_B 字母键B 虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONT ROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。 监听器KeyListener有三个方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt), keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。 除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKey Text(code)方法得到输入的字符串。用isShiftDown()判断shift键是否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift也类似。 下面的例子演示得到键码和字符的方法,在命令行上显示结果。 例15 本例程演示键盘监听器后键码的用法。 /// // KeyEvt.java

JSP中的Filter拦截器和Listener监听器

JSP中的Filter过滤器和Listener监听器 1. JSP中的过滤器 1.1 什么是过滤器 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet 或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择: (1)以常规的方式调用资源(即,调用servlet或JSP页面)。 (2)利用修改过的请求信息调用资源。 (3)调用资源,但在发送响应到客户机前对其进行修改。 (4)阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。 1.2 过滤器的基本原理 过滤器可以对客户的请求进行处理,处理完成后,它会交给下一个过滤器处理。这样,客户的请求在“过滤器链”里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改业务数据”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话查看该用户是否有修改权限;对提交的数据进行统一编码。这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。 1.3 过滤器的使用 开发Servlet过滤器的步骤如下:(1)编写实现Filter接口的类;(2)在web.xml中配置Filter。 1.3.1 实现Filter接口类 Filter接口定义了以下方法: 成员描述 destory() 由Web容器调用,初始化此Filter。 init(FilterConfig filterConfig) 由Web容器调用,初始化此Filter。 doFilter(ServletRequest request, 具体过滤处理代码,其中FilterChain参数非常重要,允许通ServletResponse response,FilterChain chain) 过当前过滤器时须要调用FilterChain.doFilter() 下面示例实现一个权限过滤器,若用户尚未登录(Session中没有保存用户信息),将回到登录页面;若已经登录则继续该请求。 public class SecurityFilter implements Filter {

javaScript,页面自动加载事件详解

javaScript,页面自动加载事件详解 篇一:javascript 动态添加事件 往往我们需要在 JS 中动态添加事件,这就涉及到浏览器兼容性问题了,以下谈及的几 种方法,我们也常常混合使用。 方法一、setAttribute var obj = document.getElementById("obj"); obj.setAttribute("onclick", "javascript:alert('测试');"); 这里利用 setAttribute 指定 onclick 属性,简单,很好理解, 但是: IE 不支持, IE 并不是不支持 setAttribute 这个函数, 而是不支持用 setAttribute 设 置某些属性, 包括对象属性、 集合属性、 事件属性, 也就是说用 setAttribute 设置 style、 onclick、 onmouseover 这些属性在 IE 中是行不通的。 LEO:在 IE6 下尝试成功 方法二、用 attachEvent 和 addEventListener IE 支持 attachEvent obj.attachEvent("onclick", Foo); function Foo() { alert("测试"); } 也可写在一起 obj.attachEvent("onclick", function(){alert("测试");}); 其它浏览器支持 addEventListener obj.addEventListener("click", Foo, false); function Foo() { alert("测试"); } 同样也可写在一起 obj.addEventListener("click", function(){alert("测试");}, false); 注意 attachEvent 的事件带 on,如 onclick,而 addEventListener 不带 on,如 click。 顺便说一下 addEventListener 的第三个参数(虽然很少用) useCapture - 如果为 true, 则 useCapture 指示用户希望启动捕获。启动捕获后,所有指定类型的事件将在被指派到树中 其下面的任何 EventTargets 之前指派给已注册的 EventListener。 正在通过树向上 bubbling 的 事件将不触发指定的使用捕获的 EventListener。 1 / 11

通过代码实例跟我学JavaScript ——JavaScript事件编程(第1部分)

1.1通过代码实例跟我学JavaScript ——JavaScript事件编程(第1部分)1.1.1JavaScript事件编程 1、HTML标签中的事件 (1)什么是事件? 事件可能是用户在页面中某些内容上的点击、鼠标经过某个特定元素或按下键盘上的某些按键,事件也还可能是Web 浏览器中发生的事情,比如说某个Web 页面加载完成,或者是用户滚动窗口或改变窗口大小、点击一个超链接等。 因此,用户对网页中的标签的一些特定“操作”(这些操作通常直接对应鼠标的动作)和系统的行为统称为事件。 (2)不同的标签有不同类型的事件 在Macromedia Dreamweaver 工具中可以利用动态帮助获得某个HTML标签的事件定义,如下图所示。 (3)事件编程 可以为不同的标签添加相关的事件响应的程序代码,称为事件编程从而可以监听特定事件的发生,并对相关的事件做出响应。 2、事件处理程序的引入——为某个标签绑定事件响应函数 如何使一段JavaScript程序和事件发生联系?一般采用“on事件名”的方式对事件处理

程序进行引入,同时它也是JavaScript规定的对应事件处理程序的句柄(Event Handler)的名字。例如onClick、onFocus、onSubmit等等。可以采用下面的方式来引入事件:(1)第一种引入方式 事件处理程序的句柄名以属性名的形式在HTML文本中某些适当的标记中出现,而对应的属性值是由网页编写者提供的JavaScript程序段(或事件处理函数名),从而实现将HTML 标签与JavaScript语言相对应起来。该方式适用于对事件处理程序的静态设置。 ; (2)第二种引入方式 将事件处理函数名赋给浏览器为网页创建的相应对象的对应属性,该方式适用于对事件处理程序的动态设置。 document.forms[0].userAge.onchange= isNumberInput; 注意:事件处理程序柄的名字是大小写不敏感的。这与HTML文本中对标签记的属性名的松散要求是一致的。 (3)对同一个事件追加多个不同的事件响应函数 前面的两种事件绑定关联的方式,都不支持追加多事件监听响应的功能要求。例如,原本某个标签元素对象已经有了onchange事件监听了,如果还想再追加一个onchange事件监听响应函数,则无法达到。 此时,可以用attachEvent ()(针对IE浏览器)或者addEventListener(针对DOM标准的浏览器)。下面为代码示例; if (target.addEventListener) { target.addEventListener(eventTypeString , eventHandlerFunction, useCapture); } else if (target.attachEvent) { target.attachEvent(eventTypeString , eventHandlerFunction); } else{ window.alert("不能正确地进行事件绑定!"); }

事件监听器

不同的事件源可以产生不同类别的事件。例如,按钮可以发送一个ActionEvent 对象,而窗口可以发送WindowEvent对象。 AWT时间处理机制的概要: 1.监听器对象是一个实现了特定监听器接口(listener interface)的类的实例。 2.事件源是一个能够注册监听器对象并发送事件对象的对象。 3.当事件发生时,事件源将事件对象传递给所有注册的监听器。 4.监听器对象将利用事件对象中的信息决定如何对事件做出响应。 下面是监听器的一个示例: ActionListener listener = ...; JButton button = new JButton("OK"); button.addActionListener(listener); 现在,只要按钮产生了一个“动作事件”,listener对象就会得到通告。对于按钮来说,正像我们想到的,动作事件就是点击按钮。 为了实现ActionListener接口,监听器类必须有一个被称为actionPerformed 的方法,该方法接收一个ActionEvent对象参数。 class MyListener implements ActionListener { ...; public void actionPerformed(ActionEvent event) { //reaction to button click goes here } } 只要用户点击了按钮,JButton对象就会创建一个ActionEvent对象,然后调用listener.actionPerformed(event)传递事件对象。可以将多个监听器对象添加到一个像按钮这样的事件源中。这样一来,只要用户点击按钮,按钮就会调用所有监听器的actionPerformed方法。 实例:处理按钮点击事件 为了加深对事件委托模型的理解,下面以一个响应按钮点击事件的简单示例来说明所需要知道的细节。在这个示例中,想要在一个面板中放置三个按钮,添加三个监听器对象用来作为按钮的动作监听器。 在这个情况下,只要用户点击面板上的任何一个按钮,相关的监听器对象就会接收到一个ActionEvent对象,它表示有个按钮被点击了。在示例程序中,监听器对象将改变面板的背景颜色。 在演示如何监听按钮点击事件之前,首先需要讲解一下如何创建按钮以及如何将他们添加到面板中。 可以通过在按钮构造器中指定一个标签字符串、一个图标或两项都指定来创建一个按钮。下面是两个示例: JButton yellowButton = new JButton("Yellow"); JButton blueButton = new JButton(new ImageIcon("blue-ball.gif")); 将按钮添加到面板中需要调用add方法:

js事件处理

JavaScript组成 ECMAScript:JavaScript语法核心。 DOM:文档对象模型(Document Object Model),提供访问和操作网页内容的方法和接口。 BOM:浏览器对象模型(Browser Object Model),提供与浏览器交互的方法和接口。 JavaScript中有五种简单数据类型,也称为基本数据类型,分别是undefined、null、boolean、number和string。另外还有一种复杂数据类型——object对象类型。JavaScript是基于对象的语言,这意味着程序员既可使用系统自定义的对象,也可使用自己创建的对象。 1 文档的结构和遍历 ParaentNode 获取该节点的父节点 ChildNodes 获取该节点的子节点数组 FirstChild 获取该节点的第一个子节点 LastChild 获取该节点的最后一个子节点 NextSibing 获取该节点的下一个兄弟节点 PreviousSibing 获取该节点上的一个兄弟节点 一般地,节点至少拥有nodeType nodeName nodeValue这三个基本属性吗,节点的类型不同,这三个属性的值也不相同NodeType属性类型分别对应1到12的常数值 NodeType 节点的类型 1 元素节点 2 属性节点 3 文本节点 4CDATA节点 5 实体引用名节点 6 实体名称节点 7处理指令节点 8注释节点 9文档节点 10文档类型节点 11 文档片段节点 12 DTD声明节点

Java的事件处理机制

Java的事件处理机制 概念部分: 1.事件:Event 是一种消息对象,封装了与事件发生相关的信息, 如操作键盘会引发KeyEvent事件, 单击关闭按钮会引发WindowEvent事件, 单击命令按钮或选择菜单项目会引发ActionEvent事件 等等 2.事件源:Event Source 产生事件的对象, 如命令按钮和单选按钮都是事件源,单击他们时,会引发ActionEvent事件 单选按钮会产生ItemEvent事件。 3.事件监听器:Event Listener 在事件发生时,事件源负责给予通知的一种对象。接收到事件通知的监听器主动的对事件进行处理。 两件事:将自己注册给事件源;事件的处理 4.事件处理器Event Handler 事件处理方法,用来接受事件并处理事件的方法。 Java事件处理的步骤: 1.类实现相应的事件监听器接口 2.重写接口中抽象方法 3.给事件源注册事件监听器 【例题】关闭窗口的实现

public class NotepadDemo{ private Frame mainForm; private MenuBar mb; private Menu m1; private Menu m2; private MenuItem mExit; private MenuItem mi1; private MenuItem mi2; private ExitHandler eh; public NotepadDemo(){ mainForm = new Frame(); mb = new MenuBar(); m1 = new Menu("文件(F)"); m2 = new Menu("编辑(E)"); mi1 = new MenuItem("新建 Ctrl + N"); mi2 = new MenuItem("打开 Ctrl + O"); mExit = new MenuItem("退出(X)"); mainForm.setMenuBar(mb); mb.add(m1); mb.add(m2); m1.add(mi1); m1.add(mi2); m1.add(mExit); mainForm.setBounds(0, 0, 400, 300); eh = new ExitHandler(); //注册事件监听器 mExit.addActionListener(eh); mi1.addActionListener(eh); mi2.addActionListener(eh); //注册Form的关闭监听器 mainForm.addWindowListener(eh); } public void NotepadShow(){ mainForm.setVisible(true); } public static void main(String[] args) { NotepadDemo nd = new NotepadDemo(); nd.NotepadShow();

相关文档
最新文档