JavaScript 中的事件介绍以及兼容

一、JavaScript 中的事件介绍以及兼容

1.事件类型

(1)定义

指的是文档或浏览器窗口中发生的一些特定交互瞬间。可以通过侦听器(处理程序)来预定事件,以使事件发生的时候执行相应的代码(一般程序需接收一个指令才完成的一个行为)。

事件类型

是一个用来说明发生什么类型事件的字符串。eg:鼠标、键盘、加载、点击事件

事件目标

事件目标是发生的事件或与之相关的对象。但是某些事件也是由其它类型的对象触发的。常用的事件目标有:window、按钮、文本框、document。

window.οnlοad=function(){函数体}

window表示时间目标

onload表示事件类型

=function(){}表示事件的处理程序

事件处理程序或事件监听程序

响应某个事件的函数则称为事件处理程序,或者叫做事件侦听器。

事件对象

事件对象是与特定事件相关且包含有关该事件详细信息的对象。

事件传播

事件传播是浏览器决定那个对象触发其事件处理程序的过程。

(2)事件模型

1) 内联

指的是行间的事件,写入HTML标签中,这种写法不能保证内容和结构进行分离,所以不建议使用,要保证页面的简洁性以及体验度。

2) 脚本

由于内联模型违反了 HTML 与 JavaScript 代码层次分离的原则。为了解决这个问题,所以将处理程序以脚本的形式嵌入页面。

3)DOM2模型

定义了两个方法,用于添加事件和删除事件处理程序的操作。

addEventListener()和 removeEventListener();所有 DOM 节点中都包含这两个方法,并且它们都接受 3 个参数;事件名、函数、冒泡或捕获的布尔值(true 表示捕获,false 表示冒泡)。

(3)传统的事件类型

1)鼠标事件

onclick:点击某个对象时调用的事件句柄

oncontextmenu:点击右键打开上下文菜单时触发(点击)

ondblclick:双击某个对象时调用的事件句柄

onmousedown:鼠标按钮被按下

onmouseenter:添加鼠标悬浮事件

onmouseleave:鼠标移出元素时触发

onmousemove:鼠标被移动

onmouseover:鼠标移到某元素上

onmouseout:鼠标从某元素移开

onmouseup:鼠标按键被松开

onmousewheel:鼠标滑轮

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>鼠标事件</title>
		<style type="text/css">
			.div1 {
				width: 300px;
				height: 300px;
				border: solid tomato;
			}
		</style>
		
		<script type="text/javascript">
			window.onload=function(){
				//获取页面div元素
				var divElement=document.getElementsByClassName('div1')[0];
				//给获取到的div元素注册/添加一个点击事件 
				//或者可以理解为添加一个监听的处理程序
				divElement.onclick=function(){  //点击某个对象时调用的事件句柄
					divElement.style.transform='scale'+'('+'1.5'+')';
				}
				divElement.oncontextmenu=function(){  //点击右键打开上下文菜单时触发(点击)
					divElement.style.marginLeft=100+'px';
				}
				divElement.ondblclick=function(){  //双击某个对象时调用的事件句柄
					divElement.style.background='black';
				}
				divElement.onmousedown=function(){  //鼠标按钮被按下
					divElement.style.borderRadius=20+'px';
				}
				divElement.onmouseenter=function(){  //添加鼠标悬浮事件
					divElement.style.borderBottomColor='deepskyblue';
				}
				divElement.onmouseleave=function(){  //鼠标移出元素时触发
					divElement.style.borderTopLeftRadius=80+'px';
				}
				divElement.onmousemove=function(){  //鼠标被移动
					divElement.style.marginTop=120+'px';
				}
				divElement.onmouseover=function(){  //鼠标移到某元素上
					divElement.style.borderBottomWidth=5+'px';
				}
				divElement.onmouseout=function(){  //鼠标从某元素移开
					divElement.style.borderRadius=50+'%';
				}
				divElement.onmouseup=function(){  //鼠标按键被松开
					divElement.style.background='gray';
				}
				divElement.onmousewheel=function(){  //鼠标滑轮
					divElement.style.transform='bisque';
				}
			}
		</script>
	</head>
	<body>
		<div class="div1"></div>
	</body>
</html>

2)键盘事件

onkeydown:某个键盘被按下

onkeyup:某个键盘被松开

onkeypress:某个键盘被按下并松开

	window.onload=function(){
				var text1=document.getElementById('txt1');
				var span=document.getElementById('span1');
				//text1.onkeydown=function(){
					//在键盘按下的时候 将信息(填入完整的内容) 写进span标签中
					//span.innerHTML='填入内容';
				//}
//				text1.onkeyup=function(){
//					span.innerHTML='填入完整的内容并松开';
//				}
//				text1.onkeypress=function(){
//					span.innerHTML='填入完整的内容按下并松开';
//				}
3)事件对象 Event

event 对象的兼容写法

event 事件对象不能兼容所有的浏览器,我们一般是采用下面这种方式进行兼容。
var oEvent=ev || event; 如果参数不是 ev 而是 event 的时候,兼容方式也可以写成下面这种格式。
document.onclick=function(event){
var oEvent=event || window.event; console.log(oEvent);
}
//测试代码:
<script>
window.onload=function(){
document.onclick=function(ev){
var oEvent=ev || event;
console.log(event);
}
</script>

event属性

oEvent.type:获取绑定的事件类型,click、mouseover等

oEvent.target:(在IE低版本中使用event、srcElement),返回触发事件的元素,object

oEvent.currentTarget;IE低版本不存在,表示当前绑定事件的元素

表单事件

onblur:元素失去焦点时触发

onfocus:获取焦点时触发

onchange:该事件在表单的内容改变时触发

onselect:用户选取文本是触发

oninput:元素获取用户时触发

onsearch:用户向搜索域输入文本时触发

onsubmit:表单提交时触发

onfocusic:元素即将获取焦点时触发

onfocusout:元素即失去焦点时触发

onreset:表单重置时触发

//失焦和获焦的案例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			function focus_01(color){
				var color1=document.getElementById('name1');
				color1.style.background=color;
			}
			
			function blur_01(value){
				function textfunction(value){//形参
					document.write(value.toUpperCase());
				}
				textfunction(value);//实参
			}
		</script>
	</head>
	<body>
		<p>请输入英文名字:
			<input type="text" name="aaa" id="name1" onfocus="focus_01('red');" onblur="blur_01(this.value);"/>
		</p>
		<p>请输入年龄:
			<input type="text" id="age"/>
		</p>
	</body>
</html>

//表单提交案例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			window.onload=function(){
				//获取form表单,从而添加提交事件
				var form2=document.getElementById('form1');
				form2.onsubmit=function(){
					//通过name获取表单元素的值
					var userName=document.form2.text1.value;
				}
			}
		</script>
	</head>
	<body>
		<form action="submit.html" method="post" name="form2" id="form1">
			<input type="text" name="text1" value=""/>
			<input type="submit" name="sub_01" value="提交"/>
		</form>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值