JavaScript 事件的一些重要说明

 更新时间:2009年10月25日 18:51:17   作者:  
关于JavaScript中事件的一些重要说明,需要的朋友可以参考下。
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://www.jb51.net">重载浏览器的默认行为</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);
}
}

相关文章

  • 微信小程序实现多图上传

    微信小程序实现多图上传

    这篇文章主要为大家详细介绍了微信小程序实现多图上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • JavaScript之Getters和Setters 平台支持等详细介绍

    JavaScript之Getters和Setters 平台支持等详细介绍

    现在,JavaScript的Getters和Setters使用非常广泛,它和每个JavaScript开发者的切身利益息息相关,我们先来快速了解什么是Getters和Setters,以及它们为什么很有用.然后,我们来看看现在都有哪些平台支持Gettets和Setters
    2012-12-12
  • JavaScript实现表格快速变色效果代码

    JavaScript实现表格快速变色效果代码

    这篇文章主要介绍了JavaScript实现表格快速变色效果的方法,通过javascript数组遍历结合时间函数来实现表格快速变色的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • JavaScript DOM操作与事件处理方法

    JavaScript DOM操作与事件处理方法

    本文通过一系列代码片段,详细介绍了如何使用JavaScript进行DOM操作、事件处理、属性操作、内容操作、尺寸和位置获取,以及实现简单的动画效果,涵盖了基础和高级技术点,适合初学者和进阶开发者,感兴趣的朋友一起看看吧
    2025-01-01
  • JS实现标签页效果(配合css)

    JS实现标签页效果(配合css)

    实现的效果是当鼠标移到某一个标签的时候,在下面的内容区显示对应的内容,并且相应标签的颜色需要改变,这样的效果是CSS和JS配合实现的,下面我们就来看看具体代码
    2013-04-04
  • 微信小程序实现星级评分和展示

    微信小程序实现星级评分和展示

    这篇文章主要为大家详细介绍了微信小程序实现星级评分和展示效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • js随机生成字母数字组合的字符串 随机动画数字

    js随机生成字母数字组合的字符串 随机动画数字

    本篇文章给大家分享的js随机生成字母数字组合的字符串,js随机生成动画数字,包括常用的产生随机数的用法,需要的朋友可以参考下
    2015-09-09
  • 纯javascript实现四方向文本无缝滚动效果

    纯javascript实现四方向文本无缝滚动效果

    本文主要给大家分享了使用纯javascript实现的可控制的四方向文本无缝滚动的代码,效果非常不错,有需要的小伙伴可以参考下。
    2015-06-06
  • Javascript Function对象扩展之延时执行函数

    Javascript Function对象扩展之延时执行函数

    这篇文章主要介绍 在js里面怎么延时执行一个函数?
    2010-07-07
  • JavaScript检测实例属性, 原型属性

    JavaScript检测实例属性, 原型属性

    这篇文章主要介绍了JavaScript检测实例属性, 原型属性,需要的朋友可以参考下
    2015-02-02

最新评论