window.event对像和在IE与FF中的区别

window.event对像和在ie与ff中的区别

event对象只在事件发生的过程中才有效。

event的某些属性只对特定的事件有意义。比如,fromelement 和 toelement 属性只对 onmouseo教程ver 和 onmouseout 事件有意义。

例子

下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转。

<html>
<head><title>cancels links</title>
<script language="jscript">
function cancellink() {
if (window.event.srcelement.tagname == "a" && window.event.shiftkey)
window.event.returnvalue = false;
}
</script>
<body onclick="cancellink()">

 

window.event
ie:有window.event对象
ff:没有window.event对象。可以通过给函数的参数传递event对象。如onmousemove=domousemove(event)
鼠标当前坐标
ie:event.x和event.y。
ff:event.pagex和event.pagey。
通用:两者都有event.clientx和event.clienty属性。

鼠标当前坐标(加上滚动条滚过的距离)
ie:event.offsetx和event.offsety。
ff:event.layerx和event.layery。
标签的x和y的坐标位置:style.posleft 和 style.postop
ie:有。
ff:没有。
通用:object.offsetleft 和 object.offsettop。

窗体的高度和宽度
ie:document.body.offsetwidth和document.body.offsetheight。注意:此时页面一定要有body标签。
ff:window.innerwidth和window.innerhegiht,以及document.documentelement.clientwidth和document.documentelement.clientheight。
通用:document.body.clientwidth和document.body.clientheight。

添加事件
ie:element.attachevent(”onclick”, func);。
ff:element.addeventlistener(”click”, func, true)。
通用:element.onclick=func。虽然都可以使用onclick事件,但是onclick和上面两种方法的效果是不一样的,onclick只有执行一个过程,而attachevent和addeventlistener执行的是一个过程列表,也就是多个过程。例如:element.attachevent(”onclick”, func1);element.attachevent(”onclick”, func2)这样func1和func2都会被执行。

标签的自定义属性
ie:如果给标签div1定义了一个属性value,可以div1.value和div1[”value”]取得该值。
ff:不能用div1.value和div1[”value”]取。
通用:div1.getattribute(”value”)。

父节点、子节点和删除节点
ie:parentelement、parement.children,element.romovenode(true)。
ff:parentnode、parentnode.childnodes,node.parentnode.removechild(node)。

type:事件的类型,如onlick中的click;
srcelement/target:事件源,就是发生事件的元素;
button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下多个键,酒把这些值加起来,所以3就代表左右键同时按下;(firefox中 0代表左键,1代表中间键,2代表右键)
clientx/clienty:事件发生的时候,鼠标相对于浏览器窗口可视文档区域的左上角的位置;(在dom标准中,这两个属性值都不考虑文档的滚动情况,也就是说,无论文档滚动到哪里,只要事件发生在窗口左上角,clientx和clienty都是 0,所以在ie中,要想得到事件发生的坐标相对于文档开头的位置,要加上document.body.scrollleft和 document.body.scrolltop)
offsetx,offsety/layerx,layery:事件发生的时候,鼠标相对于源元素左上角的位置;
x,y/pagex,pagey:检索相对于父要素鼠标水平坐标的整数;
altkey,ctrlkey,shiftkey等:返回一个布尔值;
keycode:返回keydown何keyup事件发生的时候按键的代码,以及keypress 事件的unicode字符;(firefox2不支持 event.keycode,可以用 event.which替代 )
fromelement,toelement:前者是指代mouseover事件中鼠标移动过的文档元素,后者指代mouseout事件中鼠标移动到的文档元素;
cancelbubble:一个布尔属性,把它设置为true的时候,将停止事件进一步起泡到包容层次的元素;(e.cancelbubble = true; 相当于 e.stoppropagation();)
returnvalue:一个布尔属性,设置为false的时候可以组织浏览器执行默认的事件动作;(e.returnvalue = false; 相当于 e.preventdefault();)
attachevent(),detachevent()/addeventlistener(),removeeventlistener:为制定dom对象事件类型注册多个事件处理函数的方法,它们有两个参数,第一个是事件类型,第二个是事件处理函数。在attachevent()事件执行的时候,this关键字指向的是window对象,而不是发生事件的那个元素;
screenx、screeny:鼠标指针相对于显示器左上角的位置,如果你想打开新的窗口,这两个属性很重要;
一些说明:

event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等;
event对象只在事件发生的过程中才有效。
firefox里的event跟ie里的不同,ie里的是全局变量,随时可用;firefox里的要用参数引导才能用,是运行时的临时变量。
在ie/opera中是window.event,在firefox中是event;而事件的对象,在ie中是window.event.srcelement,在firefox中是event.target,opera中两者都可用。
下面两句效果相同
var evt = (evt) ? evt : ((window.event) ? window.event : null);
var evt = evt || window.event; // firefox下window.event为null, ie下event为null
ie中事件的起泡
ie中事件可以沿着包容层次一点点起泡到上层,也就是说,下层的dom节点定义的事件处理函数,到了上层的节点如果还有和下层相同事件类型的事件处理函数,那么上层的事件处理函数也会执行。例如, div 标签包含了 a ,如果这两个标签都有onclick事件的处理函数,那么执行的情况就是先执行标签 a 的onclick事件处理函数,再执行 div 的事件处理函数。如果希望的事件处理函数执行完毕之后,不希望执行上层的 div 的onclick的事件处理函数了,那么就把cancelbubble设置为true即可

 

时间: 2024-12-01 23:53:58

window.event对像和在IE与FF中的区别的相关文章

js中window.event对象在ie与ff中的区别

一.event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromelement 和 toelement 属性只对 onmouseover 和 onmouseout 事件有意义.   1.window.event   IE:有window.event对象   FF:没有window.event对象.可以通过给函数的参数传递event对象.如onmousemove=domousemove(event)   2 .鼠标当前坐标   IE::event.x和eve

比较全面的event对像在IE与FF中的区别 推荐_javascript技巧

window.event IE:有window.event对象 FF:没有window.event对象.可以通过给函数的参数传递event对象.如onmousemove=doMouseMove(event) 鼠标当前坐标 IE:event.x和event.y. FF:event.pageX和event.pageY. 通用:两者都有event.clientX和event.clientY属性. 鼠标当前坐标(加上滚动条滚过的距离) IE:event.offsetX和event.offsetY. FF

整理的比较全的event对像在ie与firefox浏览器中的区别_javascript技巧

window.event IE:有window.event对象 FF:没有window.event对象.可以通过给函数的参数传递event对象.如onmousemove=doMouseMove(event) 鼠标当前坐标 IE:event.x和event.y. FF:event.pageX和event.pageY. 通用:两者都有event.clientX和event.clientY属性. 鼠标当前坐标(加上滚动条滚过的距离) IE:event.offsetX和event.offsetY. FF

js window.event对象使用方法介绍

event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义. 例1  代码如下 复制代码 <SCRIPT LANGUAGE="JScript"> function cancelLink() { if (window.event.srcE

Firefox下的window.event问题

如何解决firefox下window.event的问题,如下代码:     <body>       <script>       function mouseMove(ev) //ev作用参数传递firfox才能起作用       {       Ev= ev window.event;       var mousePos = mouseCoords(Ev);       document.getElementById("xxx").value = mous

window.event对象说明教程

window.event对象描述event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的过程中才有效.event的某些属性只对特定的事件有意义.比如,fromElement和toElement属性只对onmouseover和onmouseout事件有意义.例子下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转.<HTML><HEAD><TITLE>CancelsLinks<

JS中的THIS和WINDOW.EVENT.SRCELEMENT详解

 对于js初学着必须理解this和srcElement的应用,这也是面试中经常考到的.下面我们就通过几个示例来详细了解下     我们先看一个简单的例子:    代码如下: <input type="text" onblur="alert(this.value)"/>完全没有问题.   那么什么情况下不可以用? ? 1 2 3 4 5 fuction method() { alert(this.value); } <input type="

javascript window.event;这句看不懂

问题描述 javascript window.event;这句看不懂 window.event; 是怎么个用法?? Event不就是个 HTML DOM 对象吗? Window 对象属性 看帮助文档里,window对象并没有 event 这个属性啊.. window和event是怎么扯上关系的. 而且看到window.document还可以调用 document. 可能是我对于window.document这些对象的层次关系有点模糊,求讲解 解决方案 event 表示的是事件,例如常见的,按钮的

Js中的this和window.event.srcElement

  我们先看一个简单的例子: <input type="text" onblur="alert(this.value)"/>完全没有问题.   那么什么情况下不可以用? fuction method() {    alert(this.value); } <input type="text" onblur="method()"/>这个就不可以,因为method()是被响应函数调用的函数.   那么这种情