< 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. python基础03day

    # 1. # 创建字符串变量的三种写法及其区别 # 代码: #‘’.“”.“““””” # 区别: # 2. # 简述,计算机编程语言的分类及特点 # 1.机器 # 2.汇编 # 3.高级 # 3.1 ...

  2. Java Web项目搭建过程记录(struts2)

    开发工具:eclipse 搭建环境:jdk1.7   tomcat 8.0 基础的java开发环境搭建过程不再赘述,下面从打开eclipse 之后的操作开始 第一步: 创建项目,File -> ...

  3. 关于SQL中的 where 1 = 1 的用法

    在项目中的常见的一个操作:在有关SQL的代码中加入where 1 = 1,关于它的用法,可以总结如下: 首先,where 1 = 1的用法往往是为了方便后续的给SQL增加where限制条件.如果实现加 ...

  4. H3C 什么是漫游

  5. Httpd服务入门知识-Httpd服务常见配置案例之配置持久连接

    Httpd服务入门知识-Httpd服务常见配置案例之配置持久连接 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看默认的持久连接时间 [root@node101.yinzhe ...

  6. VSCode自动保存文件设置

    很多时候敲了一大堆代码,结果手贱或者电脑没电或者电脑突然崩溃,如果没有保存,只能说GG.好在VSCode有自动保存代码的功能,而且有好几种自动保存的模式选择,设置方法如下: 进入">文 ...

  7. 项目Beta冲刺(团队) ——随笔集合

    课程名称:软件工程1916|W(福州大学) 作业要求:项目β冲刺(团队) 团队名称:葫芦娃队 作业目标:汇总这次冲刺项目的所有随笔文件. 队员学号 队员昵称 博客地址 041602421 der hi ...

  8. VoIP基本原理

    VoIP基本原理 VoIP是通过Internet等互联网络传递语音信息的,主要包括终端设备.网关.网守和网络管理等部分.网关负责提供IP网络和传统的PSTN接口. VoIP的基本原理:通过语音压缩算法 ...

  9. Can总线上的电平及物理层仲裁

    CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可以进行正常的通信.在干扰比较强的场合,还需要用到屏蔽地即CAN-G(主要功能是屏蔽干扰信号),CAN协议推荐用户使用 ...

  10. js的原型与模板类型

    原型处于复用(原型)链上: 模版类型属于构造概念: 对象复用原型的数据和函数: 对象由模版类型+原型构造而成: 模版类型属于构造对象的临时变量,包含了对象空间的所有信息: 原型包含了对象所引用的原型空 ...