WEB开发网
开发学院网页设计JavaScript JavaScript Event学习第六章:事件的访问 阅读

JavaScript Event学习第六章:事件的访问

 2010-03-30 00:00:00 来源:WEB开发网   
核心提示:在这一章我会讲解如何去访问一个事件对象,现在我们已经注册了事件处理程序,JavaScript Event学习第六章:事件的访问,对于事件我们还想更深入的了解,我们想知道事件发生时候的鼠标位置,与内联式的事件处理程序合并在内联式的注册模型中,你必须把event传递给函数:1<pre><br><

在这一章我会讲解如何去访问一个事件对象。

现在我们已经注册了事件处理程序,对于事件我们还想更深入的了解。我们想知道事件发生时候的鼠标位置,我们想知道用户按下了哪些键。这些都是可能的,虽然这部分有很多烦人的浏览器兼容性问题。(这里可以快速查看浏览器兼容性列表)。

要读出事件的属性,必须要先能访问到事件。

浏览器兼容性

站在浏览器战争的角度看,Netscape实现了一个访问模型(后来被W3C做借鉴)和很多的事件属性,同时微软也做了同样的事情。当然这两种模型是完全不兼容的。但是就像我们再简介里面说的,如果

1 if (W3C/Netscape) {<br>    use W3C/Netscape model for access and property names<br>}<br>else if (Explorer) {<br>    use Microsoft model for access and property names<br>}<br>

这样是不正确的解决兼容性问题的办法,他会让一些能执行大部分代码但是没有考虑到的浏览器失去作用。所以我们得先访问一个事件然后再分别读取他的属性。

我们先来讨论访问事件的问题,事件属性会在后面讨论。

W3C/Netscape

在W3C/Netscape事件访问模型中事件会被当做一个参数传递给事件处理程序。所以如果你定义一个事件处理程序

1 element.onclick=doSomething;<br>

doSomething()就会把事件当做一个参数。习惯上保存在一个e变量中,当然你可以改成任何名字:

1 function doSomething(e) {<br>    // e gives access to the event<br>}<br>

这是完全自动的,不需要其他的代码。在匿名函数中你可以这样写:

1 element.onclick = function (e) {alert('Event type is ' + e.type)}<br>

微软

在微软的事件访问模型中有一个特别的属性window.event包含最后一个发生的事件。

1 element.onclick = doSomething;<br><br>function doSomething() {<br>    // window.event gives access to the event<br>}<br>

或者

1 element.onclick = function () {alert('Event type is ' + window.event.type)}<br>

Event和event

注意到还有一个古老的Netscape属性window.Event。IE不认识这个,Netscape 4也会曲解他。所以写的时候一定要确保event是小写e开头的。

跨浏览器的事件访问

很幸运的是要写跨浏览器访问事件的脚本还是很简单的:

1 element.onclick = doSomething;<br><br>function doSomething(e) {<br>    if (!e) var e = window.event;<br>    // e gives access to the event in all browsers<br>}<br>

如果e不存在那么就给他赋值window.event。现在e在所有浏览器里面都表示事件。

与内联式的事件处理程序合并

在内联式的注册模型中,你必须把event传递给函数:

1 <pre ><br><br>function doSomething(e) {<br>    alert(e.type);<br>}<br>

虽然在微软模型里(window.)event是正确的属性,其他浏览器也能识别。

原文地址:http://www.quirksmode.org/js/events_access.html

文章出处:http://beiyu.cnblogs.com

编缉推荐阅读以下文章

  • JavaScript Event学习补遗:addEventSimple
  • JavaScript Event学习第十一章:按键的检测
  • JavaScript Event学习第十章:一些可替换的事件对
  • JavaScript Event学习第九章:鼠标事件
  • JavaScript Event学习第八章:事件的顺序
  • JavaScript Event学习第七章:事件属性
  • JavaScript Event学习第五章:高级事件注册模型
  • JavaScript Event学习第四章:传统的事件注册模型
  • JavaScript Event学习第三章:早期的事件处理程序
  • JavaScript Event学习第二章:Event

Tags:JavaScript Event 学习

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接