`

事件驱动及事件处理

阅读更多
1、基本概念
  JavaScript是基于对象(object-based)的语言。这与Java不同,Java是面向对象的语言。而基于对象的基本特征,就是采用事件驱动(event-driven)。它是在用形界面的环境下,使得一切输入变化简单化。通常鼠标或热键的动作我们称之为事件(Event),而由鼠标或热键引发的一连串程序的动作,称之为事件驱动(Event Driver)。而对事件进行处理程序或函数,我们称之为事件处理程序(Event Handler)。

2、事件处理程序
  在JavaScript中对象事件的处理通常由函数(Function)担任。其基本格式与函数全部一样,可以将前面所介绍的所有函数作为事件处理程序。
格式如下:
Function 事件处理名(参数表){
事件处理语句集;
……
}

3、事件驱动
  JavaScript事件驱动中的事件是通过鼠标或热键的动作引发的。它主要有以下几个事件:
(1)单击事件onClick
  当用户单击鼠标按钮时,产生onClick事件。同时onClick指定的事件处理程序或代码将被调用执行。通常在下列基本对象中产生:
button(按钮对象)
checkbox(复选框)或(检查列表框)
radio (单选钮)
reset buttons(重要按钮)
submit buttons(提交按钮)

例:可通过下列按钮激活change()文件:
<Form>
<Input type="button" Value=“ ” onClick="change()">
</Form>

  在onClick等号后,可以使用自己编写的函数作为事件处理程序,也可以使用JavaScript中内部的函数。还可以直接使用JavaScript的代码等。例:
<Input type="button" value=" " onclick=alert("这是一个例子");
(2)onChange改变事件
  当利用text或texturea元素输入字符值改变时发该事件,同时当在select表格项中一个选项状态改变后也会引发该事件。
例:
<Form>
<Input type="text" name="Test" value="Test" onCharge="check('this.test)">
</Form>

(3)选中事件onSelect
  当Text或Textarea对象中的文字被加亮后,引发该事件。
(4)获得焦点事件onFocus
  当用户单击Text或textarea以及select对象时,产生该事件。此时该对象成为前台对象。
(5)失去焦点onBlur
  当text对象或textarea对象以及select对象不再拥有焦点、而退到后台时,引发该文件,他与onFocas事件是一个对应的关系。
(6)载入文件onLoad
  当文档载入时,产生该事件。onLoad一个作用就是在首次载入一个文档时检测cookie的值,并用一个变量为其赋值,使它可以被源代码使用。
(7)卸载文件onUnload
  当Web页面退出时引发onUnload事件,并可更新Cookie的状态。
四、范例
  范例1:下例程序是一个自动装载和自动卸载的例子。即当装入HTML文档时调用loadform()函数,而退出该文档进入另一HTML文档时则首先调用unloadform()函数,确认后方可进入。
test3_1.htm
<HTML>
<HEAD>
<script Language="JavaScript">
<!--
function loadform(){
alert("这是一个自动装载例子!");
}
function unloadform(){
alert("这是一个卸载例子!");
}
//-->
</Script>
</HEAD>
<BODY OnLoad="loadform()" OnUnload="unloadform()">
<a href="test.htm">调用</a>
</BODY>
</HTML>

 
范例2:这是一个获取浏览器版本号的程序。该程序首先显示一个波浪一提示信息。之后显示浏览器的版本号有关信息。
test3_2.htm
<html>
<head>
<script language="JavaScript"><!--
// -->
function makeArray(n){
this.length=n
return this
}
function hexfromdec(num) {
hex=new makeArray(1);
var hexstring="";
var shifthex=16;
var temp1=num;
for(x=1; x>=0; x--) {
hex[x]=Math.round(temp1/shifthex - .5);
hex[x-1]=temp1 - hex[x] * shifthex;
temp1=hex[x-1];
shifthex /= 16;
}
for (x=1; x>=0; x--) { hexstring+=getletter(hex[x]); }
return (hexstring);
}
 
function getletter(num) {
if (num < 10) { return num; }
else {
if (num == 10) { return "A" }
if (num == 11) { return "B" }
if (num == 12) { return "C" }
if (num == 13) { return "D" }
if (num == 14) { return "E" }
if (num == 15) { return "F" }
}
}
function rainbow(text){
var color_d1;
var allstring="";
for(i=0;i<text.length;i=i+2){
color_d1=255*Math.sin(i/(text.length/3));
color_h1=hexfromdec(color_d1);
allstring+="<FONT COLOR="+color_h1+"ff"+color_h1+">"+text.substring(i,i+2)+"</FONT>";
}
return allstring;
}
 
function sizefont(text){
var color_d1;
var allstring="";
var flag=0;
for(i=0,j=0;i<text.length;i=i+1){
if (flag==0) {
j++;
if (j>=7) {
flag=1;}}
if (flag==1) {
j=j-1;
if (j<=0) {
flag=0; }}
allstring+="<FONT SIZE="+ j + ">" + text.substring(i,i+1) + "</FONT>";
}
return allstring;
}
document.write("<font size=8><CENTER>")
document.write("<BR><BR>")
document.write( sizefont("这是一个获取WEB浏览器的程序"))
document.write("</CENTER></font>")
document.write("浏览器名称: "+navigator.appName+"<br>");
document.write("版本号: "+navigator.appVersion+"<br>");
document.write("代码名字: "+navigator.appCodeName+"<br>");
document.write("用户代理标识: "+navigator.userAgent);
</script>
<body>
</body>
</html>

分享到:
评论

相关推荐

    基于STM32的事件驱动框架的应用

    传统嵌入式单片机开发中...将量子框架中的 QF 框架充当软件总线,利用事件分发机制和活动对象划分在异步事件处理上的优势,从而得出基于STM32 的事件驱动框架可以扩展嵌入式单片机的灵活性,丰富嵌入式系统功能开发的结论

    spring事件驱动 + 策略模式应用

    技术: 1. spring事件驱动(ApplicationEventPublisher) 2. 策略模式处理事件 目的: 1. 通过event,代码逻辑异步处理 2. 通过策略模式,构建具体监听实现 3. 解耦 4. 容错(降低代码块错误风险)

    一个事件驱动的嵌入式控制器框架(基于STM32平台).zip

    Q-Controllers是一个事件驱动的应用代码框架,适用于低端单片机无法跑操作系统,但又要处理越来越复杂的代码构架的情况。 因为不依赖于操作系统,所以非常容易被移植到stm32之外的其他单片机上。即便不进行移植,...

    一个事件驱动的嵌入式控制器框架(基于STM32平台)

    Q-Controllers是一个事件驱动的应用代码框架,适用于低端单片机无法跑操作系统,但又要处理越来越复杂的代码构架的情况。 因为不依赖于操作系统,所以非常容易被移植到stm32之外的其他单片机上。即便不进行移植,...

    Java poi基于事件驱动读取excel 2007海量数据 处理空单元格

    该工具类是poi基于事件驱动去读取海量excel数据,解决内存溢出以及空单元格的问题。 该压缩包里面有两个文件,TestExcel.java主要是原始的处理方法,操作简单,适合小数据量的读取。 ExampleEventUserModelUtil.java...

    C语言实现事件驱动型按键驱动模块程序

    C语言实现,用于嵌入式尤其单片机系统,小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,按键业务逻辑更清晰。c语言源代码;修订了原版的bug,更易用。...

    浅析基于事件驱动会计信息系统的会计运用

    通过创新基于事件驱动会计信息系统的建立,结合会计信息的收集处理过程强化新型会计信息系统在会计中的运用,指出基于事件驱动程序会计信息系统在实施过程中所面临的风险及应对对策。

    Java事件驱动编程相关实例源码.rar

    这些实例与事件驱动程序设计有关,比如事件监听、注册和处理、内部类监听器、匿名内部类监听器、处理简单行为的事件、处理窗口事件、监听器接口适配器、鼠标事件、键盘事件、使用Timer类动画等。

    事件驱动状态机state machine

    事件驱动状态机State Machine 事件驱动状态机(Event-Driven State Machine)是一种特殊类型的状态机,它的状态 transition 由事件(Event)驱动。这种状态机广泛应用于许多领域,如嵌入式系统、机器人控制、自动化...

    多智能体系统的事件驱动控制.pdf

    在传感器网络中,事件驱动控制策略可以应用于数据采集和处理。在智能交通系统中,事件驱动控制策略可以应用于交通流控制和路网优化。 然而,事件驱动控制策略也存在一些挑战和问题,例如事件触发机制的设计、事件...

    关于事件驱动的异步处理的资料

    关于事件驱动的异步处理的资料,很辛苦找的,希望有用~

    基于事件驱动的煤矿井下安全事件检测与预警

    利用复杂事件处理技术构建了基于事件驱动的煤矿井下安全事件检测与预警触发模式。以井下RFID人员定位数据与环境监测数据为基础应用数据,基于复杂事件处理技术搭建大规模井下安全流数据处理框架,设计离线数据关联规则...

    事件驱动架构

    事件驱动架构Esper文档,Esper是一个开源的事件驱动框架,对于处理CEP,ESP的架构不错,比如事件监控、网络监控等等基于事件的模型。

    C事件驱动循环的网络IO编程框架的源码.rar

    基于事件驱动循环的网络IO编程框架,小编英语学的不好,直接把英原文复制出来,如下: Some of the specialties of libev not commonly found elsewhere are: - extensive and detailed, readable documentation ...

    EFSM(事件驱动型有限状态机)是一个基于事件驱动的有限状态机,主要应用于嵌入式设备的软件系统中

    EFSM(event finite state machine,事件驱动型有限状态机),是一个基于事件驱动的有限状态机。使用EFSM可实现上百个状态、上千种事件处理,且可实现多重状态机和层次状态机。可应用在云后台微服务和嵌入式软件等各种...

    事件驱动架构及应用

    Gartner在2003年引入了一个新术语事件驱动架构(EventDrivenArchitecture,EDA),主要用于描述一种基于事件的范例。EDA是一种用于进行设计和实现应用和系统的方法—在这些应用和系统里,事件所触发的消息可以在独立的...

    JavaScript教程

     事件驱动及事件处理  范例:自动装卸载;获取版本号 • 四、 基于对象的JavaScript语言  对象的基础知识  常用对象的属性和方法  范例:时钟 • 五、 创建新对象  对象的定义  创建对象实例  对象方法的...

    Linux设备驱动——中断、并发请求及周期性事件处理

    Linux设备驱动——中断、并发请求及周期性事件处理,描述

    详解Javascript事件驱动编程

    事件对象:当某个事件发生时,可能会产生一个事件对象,该时间对象会封装好该时间的信息,传递给事件处理程序 事件处理程序:响应用户事件的代码 案例: &lt;html&gt; &lt;head&gt; &lt;script type

Global site tag (gtag.js) - Google Analytics