关于event 和 window.event问题及浏览器兼容问题
< 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问题及浏览器兼容问题的更多相关文章
- event和window.event
type:事件的类型,如onlick中的click:srcElement/target:事件源,就是发生事件的元素:button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下 ...
- window.event对象详细介绍
1.event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的过程中才有效.event的某些属性只对特定的事件有意义.比如,fromEleme ...
- window.event.srcElement与window.event.target 触发事件的元素 触发事件对象的获取,window.event与时间函数参数的event是同一个 事件对象
判断事件触发的元素: var tag = window.event.target || window.event.srcElement; if (tag.tagName.toLowerC ...
- Window.Event.KeyCode的含义
Window.Event.KeyCode=13的含义(转载) 2011-04-16 09:41:18| 分类: html | 标签:keycode event realkey var do ...
- window.event对象详尽解析
event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...
- javascript中window.event事件用法详解
转自http://www.jb51.net/article/32564.htm描述 event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生 ...
- js中window.event对象
event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...
- js window.event
转载请注明来源:https://www.cnblogs.com/hookjc/ 描述event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的 ...
- javascript坐标:event.x、event.clientX、event.offsetX、event.screenX 用法
clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包 ...
随机推荐
- Java自学-数字与字符串 格式化输出
Java 使用printf或format 进行格式化输出 步骤 1 : 格式化输出 如果不使用格式化输出,就需要进行字符串连接,如果变量比较多,拼接就会显得繁琐 使用格式化输出,就可以简洁明了 %s ...
- 突破Java面试-Redis集群模式的原理
1 面试题 Redis集群模式的工作原理说一下?在集群模式下,key是如何寻址的?寻址都有哪些算法?了解一致性hash吗? 2 考点分析 Redis不断在发展-Redis cluster集群模式,可以 ...
- pandas-21 Series和Dataframe的画图方法
pandas-21 Series和Dataframe的画图方法 ### 前言 在pandas中,无论是series还是dataframe都内置了.plot()方法,可以结合plt.show()进行很方 ...
- springmvc核心流程
用户请求DispathcerServlet(前端控制器). (前端控制器)DispatcherServlet接受到请求,将根据请求信息交给处理器映射器(HandlerMapping). 处理器映射器( ...
- linux下apache和tomcat整合
一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由 ...
- Jmeter 使用集合点
概念解释 集合点,这个概念是loadrunner中的. 这个东西可以这样理解,比如我们在跑100起跑的时候,需要在发令枪响之后,10人同时起步,等10人同时达到终点, 再次开发令枪,重复上面的动作. ...
- Httpd服务入门知识-Httpd服务常见配置案例之设定默认字符集
Httpd服务入门知识-Httpd服务常见配置案例之设定默认字符集 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看生产环境中使用的字符集案例 1>.查看腾讯设置的默认 ...
- Haproxy 让后端RS记录真实IP
一.修改haproxy.cfg配置文件,在defaults中加入如下两行,并重启haproxy. vim /etc/haproxy/haproxy.cfg defaults option http-s ...
- 2019牛客暑期多校训练营(第九场)B:Quadratic equation (二次剩余求mod意义下二元一次方程)
题意:给定p=1e9+7,A,B. 求一对X,Y,满足(X+Y)%P=A; 且(X*Y)%P=B: 思路:即,X^2-BX+CΞ0; 那么X=[B+-sqrt(B^2-4C)]/2: 全部部分都要 ...
- signed Unsigned Compare
// signUnsignCompare.cpp : Defines the entry point for the console application. // #include "st ...