JavaScript 事件的一些重要说明


Posted in Javascript onOctober 25, 2009

1,JavaScript异步回调

<script language="javascript"> 
//注册回调函数loaded到处理函数window.onload上 
window.onload = loaded; 
//把方法window.alert地址传递给show函数 
var show = window.alert; 
function loaded(){ 
show("success"); 
} 
</script>

2,事件对象

下面的js实现当在textarea文本框里面键入回车时,并不导致换行。即禁用回车键

<textarea ></textarea> 
<script language = "javascript"> 
/* 
事件的对象的棘手部分在于,IE的实现与W3C的规范有查表。IE使用一个独立的全局事件对象(它可以再全局变量属性window.event中找到),而其他浏览器则使用独立的包含事件对象的参数传递。 
*/ 
document.getElementsByTagName("textarea")[0].onkeypress = function(e) 
{ 
//如果不存在事件对象,则获取全局的(仅IE)的对象 
var e = e || window.event; 
//如果敲击了回车键,返回false(使它不发生任何行为) 
return e.keyCode != 13; 
} 
</script>

3,this关键字

浏览器会把this关键字等同于引用该函数(含有this关键字的函数)的当前元素

<body> 
<div id = "body"> 
<ul class = "links"> 
<li> 
<a href = "/">Home</a> 
</li> 
<li> 
<a href = "./">mappath</a> 
</li> 
<li> 
<a href = "../">parentpath</a> 
</li> 
</ul> 
</div> 
</body> 
<script language = "javascript"> 
var li = document.getElementsByTagName("li"); 
for (var i = 0; i < li.length; i++) 
{ 
li[i].onclick = handeClick; 
} 
function handeClick() 
{ 
this.style.backgroundColor = "blue"; 
this.style.color = "red"; 
} 
</script>

4,取消事件冒泡

通常当你对子元素作样式作修改,或者触发事件,根据冒泡原理,其父元素也会作相同改变,为防止这类事情发生,需要做取消事件冒泡的处理。

下面实例展示了鼠标会为其悬停的当前元素加上红色的边框。如果不阻止事件冒泡的话,每次把鼠标移到一个元素上时,该元素及其父元素都会有红色的边框,这是我们不希望看到的。

<body> 
<div id = "body"> 
<ul class = "links"> 
<li> 
<a href = "/">Home</a> 
</li> 
<li> 
<a href = "./">mappath</a> 
</li> 
<li> 
<a href = "../">parentpath</a> 
</li> 
</ul> 
</div> 
</body> 
<script language="javascript"> 
//阻止冒泡的通用函数 
function stopBubble(e) 
{ 
if (e && e.stopPropagation) 
//w3c方法 
e.stopPropagation(); 
else 
//ie方法 
window.event.cancelBubble = true; 
} 
var li = document.getElementsByTagName("*"); 
for (var i = 0; i < li.length; i++) 
{ 
//监听用户鼠标,当移动到元素上时,为元素加上红色边框 
li[i].onmouseover = function(e) 
{ 
this.style.border = "1px solid red"; 
stopBubble(e); 
} 
//检查用户鼠标,当移开元素时,删除我们加上的边框 
li[i].onmouseout = function(e) 
{ 
this.style.border = "0px"; 
stopBubble(e); 
} 
} 
</script>

5,重载浏览器的默认行为

浏览器都有这种默认的行为,即当我们在<a>标签上点击的时候会链接到href属性的地址上,有的时候我们并不希望这种事情发生,而想实现我们自己的效果,比如弹出警告框,示例如下。

<a href = "https://3water.com">重载浏览器的默认行为</a> 
<script language = "javascript"> 
/* 
为了达到同<a href = "#" onclick = function(){alert("success");}>content</a>相同效果 
*/ 
function stopDefault(e) 
{ 
//W3C防止浏览器默认行为 
if (e && e.preventDefault) 
e.preventDefault(); 
//IE防止浏览器默认行为 
else 
window.event.returnValue = false; 
return false; 
} 
var a = document.getElementsByTagName("a"); 
for (var i = 0; i < a.length; i++) 
{ 
a[i].onclick = function(e) 
{ 
alert("我已经修改了浏览器的默认行为了"); 
return stopDefault(e); 
//好像直接写下面一句也可以 
//return false; 
} 
} 
</script>

6,事件的亲和力(accessibility,又称可访问性)

为了使得自己的网站更有亲和力,可以这样考虑,当我们把鼠标放在一个元素上或者通过键盘的tab键访问时,其样式应该保持一致,如下代码

<body> 
<div id = "body"> 
<ul class = "links"> 
<li> 
<a href = "/">Home</a> 
</li> 
<li> 
<a href = "./">mappath</a> 
</li> 
<li> 
<a href = "../">parentpath</a> 
</li> 
</ul> 
</div> 
</body> 
<script language="javascript"> 
var a = document.getElementsByTagName("a"); 
for (var i = 0; i < a.length; i++) 
{ 
//绑定鼠标悬停和聚焦事件处理函数到<a>元素上 
//当用户把鼠标悬停到链接上,或者(使用键盘)聚焦到链接上时,它会把<a>的背景颜色变成蓝色 
a[i].onmouseover = a[i].onfocus = function() 
{ 
this.style.backgroundColor = "blue"; 
} 
//绑定鼠标离开和模糊事件处理函数到<a>元素上 
//当用户从链接移开时,它会把<a>的背景颜色变成白色 
a[i].onmouseout = a[i].onblur = function() 
{ 
this.style.backgroundColor = "white"; 
} 
} 
</script>

7,绑定事件监听
//addEventt()添加事件 
//Scott Andrew's original addEvent() function 
//elm元素,document.getElementId('btn1') 
//evType事件名称,要注意的是"onclick"要改为"click","onblur"要改为"blur",也就是说事件名不要带"on",如Click 
//fn当然就是绑定的函数了,记住不要跟括号,如showalert 
//useCapture布尔值,表示该事件的响应顺序.userCapture若为true,则浏览器采用Capture,若为false则采用bubbing方式.建议用false 
function addEvent(elm, evType, fn, useCapture) 
{ 
if (elm.addEventListener) 
{//firefox,navigation,etc.. 
elm.addEventListener(evType, fn, useCapture); 
} 
else if (elm.attachEvent) 
{//IE 
var r = elm.attachEvent('on' + evType,fn); 
} 
else 
{ 
elm['on' + evType] = fn; 
} 
} 
//removeEvent()注销事件 
//参数名同addEvent()函数 
function removeEvent(elm, evTye, useCapture) 
{ 
if (elm.detachEvent) 
{ 
elm.detachEvent('on' + evType); 
} 
else if (elm.removeEventListener) 
{ 
elm.removeEventListener(evType, userCapture); 
} 
}
Javascript 相关文章推荐
javascript高亮效果的二种实现方法
Sep 14 Javascript
jquery 图片Silhouette Fadeins渐显效果
Feb 07 Javascript
jQuery EasyUI datagrid实现本地分页的方法
Feb 13 Javascript
JavaScript中SetInterval与setTimeout的用法详解
Nov 10 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
Dec 08 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
Apr 19 Javascript
js实现简单数字变动效果
Nov 06 Javascript
Vue组件中的data必须是一个function的原因浅析
Sep 03 Javascript
node版本管理工具n包使用教程详解
Nov 09 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
Mar 07 Javascript
手把手教你如何编译打包video.js
Dec 09 Javascript
javascript写的一个链表实现代码
Oct 25 #Javascript
JavaScript的变量作用域深入理解
Oct 25 #Javascript
理解JavaScript变量作用域更轻松
Oct 25 #Javascript
理解 JavaScript 预解析
Oct 25 #Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
Oct 25 #Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
Oct 25 #Javascript
javascript window对象属性整理
Oct 24 #Javascript
You might like
PHP 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
php中socket通信机制实例详解
2015/01/03 PHP
详解PHP数组赋值方法
2015/11/07 PHP
php读取本地json文件的实例
2018/03/07 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
javascript实现贪吃蛇小练习
2020/07/05 Javascript
python读写文件操作示例程序
2013/12/02 Python
Python字符编码判断方法分析
2016/07/01 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
python实现一个猜拳游戏
2020/04/05 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
法学毕业生自我鉴定
2014/01/31 职场文书
党建工作先进材料
2014/05/02 职场文书