DOM基础教程之事件对象
DOM基础教程:事件对象详解
在Web开发中,事件是浏览器与用户交互的关键桥梁。浏览器以对象的形式处理所有事件,这些事件对象包含了关于触发事件的详细信息。不同的浏览器在处理这些事件对象时存在差异,特别是在早期的IE浏览器与现代的标准DOM浏览器之间。
在IE浏览器中,事件对象是作为`window`对象的一个属性来访问的,通常通过以下方式获取:
```javascript
oP.onclick = function(){
var oEvent = window.event;
}
```
尽管它是`window`对象的属性,但`event`对象只能在事件发生时访问,事件处理函数执行完毕后,该对象就不再存在。
遵循标准DOM规范,事件对象应该作为唯一的参数传递给事件处理函数。在类似火狐的浏览器中,访问事件对象通常是这样的:
```javascript
oP.onclick = function(oEvent){
// ... 事件处理代码
}
```
为了兼容两种浏览器,开发者通常采用了一种策略来处理这种差异:
```javascript
oP.onclick = function(oEvent){
if(!oEvent) oEvent = window.event; // 处理兼容性,获取事件对象
// ... 事件处理代码
}
```
一旦获取了事件对象,浏览器就可以利用其一系列属性和方法来处理各种事件,如鼠标事件、键盘事件和浏览器事件等。常用的属性和方法包括:`type`(表示事件的类型)、`shiftKey`、`altKey`、`ctrlKey`(检测按键状态)以及`clientX`、`clientY`、`screenX`、`screenY`(获取鼠标指针位置)等。其中,`type`属性是各类浏览器都兼容的,它返回事件的类型,如“click”、“mousemove”等,这对于同一个函数处理多种事件非常有用。
以下是一个示例代码,展示了如何使用同一个函数处理多种事件,并检测按键状态和鼠标位置:
```html
function handle(oEvent) {
var disp = document.getElementById("display");
if(!oEvent) oEvent = window.event; // 处理兼容性,获取事件对象
if (oEvent.type == "click") {
dispnerHTML += "你点击了我!";
} else if (oEvent.type == "mouseover") {
dispnerHTML += "你移动到我的上面";
}
var bShift = oEvent.shiftKey; // 检测Shift键是否按下
var bAlt = oEvent.altKey; // 检测Alt键是否按下
var bCtrl = oEvent.ctrlKey; // 检测Ctrl键是否按下
// 获取鼠标指针位置(clientX和clientY)...
}
window.onload = function() {
var oP = document.getElementById("box"); // 获取元素引用...
oP.onclick = handle; // 添加点击事件处理函数...
oP.onmouseover = handle; // 添加鼠标悬停事件处理函数...
}
Click Me
鼠标事件中的位置与目标:深入理解clientX、clientY、screenX与screenY以及事件目标(target)
在Web开发中,鼠标事件是不可或缺的一部分。当我们谈论鼠标事件时,经常会遇到一些特定的坐标属性,如clientX和clientY,以及screenX和screenY。这些属性帮助我们了解鼠标在客户端区域的位置,以及在整个计算机屏幕上的位置。
让我们看看客户端坐标。当您在网页上移动鼠标时,clientX和clientY表示鼠标指针在浏览器窗口中的位置,这个位置不包括浏览器的状态栏、菜单栏等。您可以通过以下代码获取这些值:
```javascript
var iClientX = oEvent.clientX;
var iClientY = oEvent.clientY;
```
而screenX和screenY则代表鼠标在整个计算机屏幕的位置。无论您正在使用哪个应用程序或窗口,这些值都会反映鼠标在屏幕上的实际位置。获取这些值的代码如下:
```javascript
var iScreenX = oEvent.screenX;
var iScreenY = oEvent.screenY;
```
除了这些坐标信息外,开发者经常需要知道是哪个元素触发了这个事件,也就是事件的目标(target)。在IE浏览器中,这个目标元素可以通过event对象的srcElement属性找到。而在标准的DOM浏览器中,这个属性则是target。为了兼容两种浏览器,我们可以使用如下代码来获取事件目标:
```javascript
function handle(oEvent) {
var disp = document.getElementById("display");
if (window.event) oEvent = window.event; //处理兼容性,获得对象
var oTarget;
if (oEvent.srcElement) //处理兼容性,获得事件目标元素
oTarget = oEvent.srcElement;
else
oTarget = oEvent.target;
dispnerHTML += "元素名称:" + oTarget.tagName + "
" + "元素内容:" + oTarget.textContent + "
" + "之前紧随的节点:" + oTarget.previousSibling.textContent; // 这里假设了节点有previousSibling属性,可能需要进一步处理以确保兼容性。实际使用时请根据实际情况调整代码。"; } } window.onload = function() { var oP = document.getElementById("box"); oP.onclick = handle; }; 以下是HTML结构示例:
网络推广网站
- DOM基础教程之事件对象
- 深入了解query和params的使用区别
- 微信小程序实现折叠展开效果
- Bootstrap学习笔记之进度条、媒体对象实例详解
- MVC文件上传支持批量上传拖拽及预览文件内容校
- NodeJS如何实现同步的方法示例
- javascript实现一个简单的弹出窗
- 图文详解MySQL中两表关联的连接表如何创建索引
- Yii使用ajax验证显示错误messagebox的解决方法
- 运用jQuery写的验证表单(实例讲解)
- 实例介绍PHP的Reflection反射机制
- jQuery实现的简单对话框拖动功能示例
- jQuery实现渐变弹出层和弹出菜单的方法
- 一篇文章搞定JavaScript类型转换(面试常见)
- 微信支付之JSAPI公众号支付详解
- jQuery中$.each使用详解