< html>
< script language="javascript">
function test(event) {
event = event || window.event;
if(event.keyCode==13){
alert("你按了回车")
}
if(event.shiftKey==true) {
alert("你按了shift")
}
if(event.ctrlKey==true){
alert("你按了ctrl")
}
if(event.altKey==true) {
alert("你按了alt")
}
}
< /script>
< body onkeydown="test(event)">
Please type "enter"key "shift"key "ctrl"key "alt"key.
</body>
< /html>

有关 event 和 window.event
在IE/Opera中,是window.event,而在Firefox中,是event
而事件的对象,在IE中是window.event.srcElement,在Firefox中是event.target,而在Opera中则两者都支持。

我们还是用例子来说明。 
//**********************************
event的跨浏览器测试

//Firefox中在写关于event的函数的时候,必须把event对象作为参数传递给函数,这样才能使用event对象

function doTestEvent( evt ) {
//如果是IE/Opera,我们就用 srcElement 来获取触发事件的对象
//如果是Firefox,我们就用 target 来获取触发事件的对象
var src = evt.srcElement?evt.srcElement : evt.target;
alert( src.value );
}

//--> 
//***********************************
这里顺便说一下判断鼠标按键的问题。 
在 IE 里面 
左键是 window.event.button = 1 
右键是 window.event.button = 2
中键是 window.event.button = 4
没有按键动作的时候 window.event.button = 0
在 Firefox 里面 
左键是 event.button = 0 
右键是 event.button = 2
中键是 event.button = 1 
没有按键动作的时候 event.button = 0
在 Opera 7.23/7.54 里面 
鼠标左键是 window.event.button = 1
没有按键动作的时候 window.event.button = 1 
右键和中键无法获取 
而在 Opera 7.60/8.0 里面 
鼠标左键是 window.event.button = 0
没有按键动作的时候 window.event.button = 0
右键和中键无法获取 
下面我们写一个能在 IE4.01+/Firefox 0.9+/Opera 7.23+ 环境中均能运行正常的小程序,功能是用鼠标拖动层。 
//***********************************

可用鼠标拖动的层

var moving = false;
var initX = 0;
var initY = 0;
//*******************
// 获取触发事件的对象
//*******************
function findSrc(evt){
return( evt.target evt.target : evt.srcElement );
}
function start(evt)
{
//按下鼠标左键才允许移动
//evt.button == 1 IE/Opera 7.23/7.54
//evt.button == 0 Firefox/Opera 7.6+
if ( evt.button == 1 || evt.button == 0) {
moving = true;
initX = evt.offsetX evt.offsetX : evt.layerX;
initY = evt.offsetY evt.offsetY : evt.layerY;
findSrc( evt ).style.cursor = "move";
window.status = "开始(button=" + evt.button + ")";
} else {
stop( evt );
}
}
function stop( evt ) {
moving = false;
findSrc( evt ).style.cursor = "";
window.status = "结束(button=" + evt.button + ")";
}
function move(evt) {
//按下鼠标左键才允许移动
//evt.button == 1 IE/Opera 7.23/7.54
//evt.button == 0 Firefox/Opera 7.6+
if (moving && ( evt.button == 1 || evt.button == 0 )) {
var intx = document.body.scrollLeft + evt.clientX; //获取当前鼠标位置的X坐标
var inty = document.body.scrollTop + evt.clientY; //获取当前鼠标位置的Y坐标
var div = findSrc( evt );
div.style.top = inty - initY;
div.style.left = intx - initX;
window.status = "X=" + intx + " Y=" + inty + " button=" + evt.button;
} else {
window.status = "已停止(button=" + evt.button + ")";
}
}

原文出处:

[1] seminmredoxu, event 和 window.event, http://blog.csdn.net/seminmredoxu/article/details/6856253

关于event 和 window.event问题及浏览器兼容问题的更多相关文章

  1. event和window.event

    type:事件的类型,如onlick中的click:srcElement/target:事件源,就是发生事件的元素:button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下 ...

  2. window.event对象详细介绍

    1.event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的过程中才有效.event的某些属性只对特定的事件有意义.比如,fromEleme ...

  3. window.event.srcElement与window.event.target 触发事件的元素 触发事件对象的获取,window.event与时间函数参数的event是同一个 事件对象

    判断事件触发的元素:     var tag = window.event.target || window.event.srcElement;    if (tag.tagName.toLowerC ...

  4. Window.Event.KeyCode的含义

    Window.Event.KeyCode=13的含义(转载) 2011-04-16 09:41:18|  分类: html |  标签:keycode  event  realkey  var  do ...

  5. window.event对象详尽解析

    event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...

  6. javascript中window.event事件用法详解

    转自http://www.jb51.net/article/32564.htm描述 event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生 ...

  7. js中window.event对象

    event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...

  8. js window.event

    转载请注明来源:https://www.cnblogs.com/hookjc/ 描述event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的 ...

  9. javascript坐标:event.x、event.clientX、event.offsetX、event.screenX 用法

    clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包 ...

随机推荐

  1. Java自学-接口与继承 final

    Java的修饰符final final修饰类,方法,基本类型变量,引用的时候分别有不同的意思. 示例 1 : final修饰类 当Hero被修饰成final的时候,表示Hero不能够被继承 其子类会出 ...

  2. WebStorm eslint插件报错解决 - TypeError: this.CliEngine is not a constructor

    将eslint更新版本后,出现TypeError: this.CliEngine is not a constructor的错误. 解决办法: 1.编辑 X:\WebStorm\plugins\Jav ...

  3. Java深入学习(6):Disruptor

    Disruptor框架简介: 并发框架,基于事件驱动,使用观察者模式 底层采用环形数组,取模算法 简单使用: /** * 声明一个Event:表示生产者和消费者之间传递的数据类型 */ public ...

  4. WDA演练一:用户登陆界面设计(一)

    一,新建用户表: 用户和密码参考标准的.这里给用户分了几个维度,以便后面进行接下来的业务设定. 二,新建ZLY_PORTAL 程序. 除了MAIN视图外,在添加LOGON视图. 1.导入预先做好的主页 ...

  5. 使用APICloud创建一个webapp项目

    1.在APICloud官网注册,下载APICloud Studio并解压.(这里我选择的是APICloud Studio,还可以选择其他的开发工具的APICloud插件如Sublime,Webstor ...

  6. angular8中 如何引入两个echarts版本

    下载echarts2和echarts4的源码,然后在index.html中 1.先引入echarts4版本 2.然后引入echarts2版本 并且将echarts2源码中所有echarts 替换为ec ...

  7. 基于TCP协议的大文件传输(粘包问题处理)

    基于TCP的大文件上传服务端实现 # 服务端 # -*- coding: utf-8 -*- from socket import * import json, struct server = soc ...

  8. Jmeter 使用集合点

    概念解释 集合点,这个概念是loadrunner中的. 这个东西可以这样理解,比如我们在跑100起跑的时候,需要在发令枪响之后,10人同时起步,等10人同时达到终点, 再次开发令枪,重复上面的动作. ...

  9. [Doxygen].Docygen使用

    转自:https://www.cnblogs.com/chenyang920/p/5732643.html Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文 ...

  10. 数据结构中的堆(Heap)

    堆排序总结 这是排序,不是查找!!!查找去找二叉排序树等. 满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树. 构建顶堆: a.构造初始堆 b.从最后一层非叶节点开始调整,一直到根节点 c.如果 ...