JavaScript 中的window.event代表的是事件的状态,但是我有一个疑问。。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 中的window.event代表的是事件的状态,但是我有一个疑问。。。相关的知识,希望对你有一定的参考价值。

就是window.event对象代表的是任何发生的事件吗?因为我看到是window对象的event所以我就想,是不是发生了任何事件时,我们都能通过引用window。event都能获取所发生事件的相关属性?望高手赐教!

一、window.event代表着事件对象的状态。只有在事件发生时生效。如鼠标、键盘等事件被触发时这个对象才存在。window.event这只在IE下是这样的。他并不是标准。。也就是说其他浏览器并不支持。在W3C标准支持的浏览器下事件对向是引发事件涵数的第一个参数,参数名随意。

二、javascript函数(方法)d()
参数为e||window.event  表示e或window.event  这句话是跨浏览器的写法  支持这两种方式的 浏览器才能进入该方法,IE中该对象为window.event(window可省略)  而Firefox中该对象为e  ,至于该对象是什么:该对象代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等  例如:获取光标位置 event.clientX event.clientY

拓展资料

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。 

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。

(参考资料 百度百科 JavaScript)

参考技术A 在IE下是这样
但在FIREFOX下不一样,在firefox中event 是事件回调函数的第一个参数,事件不发生时是不存在event对象的

无论是在IE还是在firefox下, 应在在事件回调函数里使用event对象追问

我刚刚工作,还是个JS小菜鸟,高手能给举个例子吗,有点不明白什么教回调函数,最好越全面越详细越好,谢了啊!

追答

事件触发后要执行的函数就是这个事件的回调函数

click

这里的onclick="func(1,2,event)" 相当于
document.getElementById("btn").onclick = function(event)
/*
这是回调函数,他的第一个参数就是event,在这里你可以使用其他参数名,但是,如果内嵌在html标签中的js代码,必须写成event
*/
alert(event) //firefox ,IE下 则 alert(window.event)

func(1,2,event);


function func(a,b,e)
//这个func不是回调函数,在这个例子中他只是在回调函数内部被调用
alert(a+','+b);
alert(e); //这个是被传进来的event对象


在HTML标签中内嵌的js代码中访问event对象 都可以简单的用event指代,因为这不但符合firefox的规范,而且,在IE中刚好是因为存在window.event,而访问window对象下的属性和方法都可以忽略window不写,因此,下面的方式func的第三个参数都是event,
click
但是你要知道,这个event的用法在根本上是不同的,因为如果你使用document.getElementById("btn").onclick = 回调函数
的方式来给HTML标签绑定事件回调函数时,你只能在回调函数第一个参数里传入event对象,但是IE不是这样,在IE下你只能在回调函数里面用 window.event(或直接用event)来访问event对象

参考技术B javascript函数(方法)d()
参数为e||window.event 表示e或window.event 这句话是跨浏览器的写法 支持这两种方式的 浏览器才能进入该方法
IE中该对象为window.event(window可省略) 而Firefox中该对象为e
至于该对象是什么:
该对象代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等 例如:获取光标位置 event.clientX event.clientY
参考技术C 首先回答你第一个问题:window.event代表着事件对象的状态。只有在事件发生时生效。如鼠标、键盘等事件被触发时这个对象才存在。window.event这只在IE下是这样的。他并不是标准。。也就是说其他浏览器并不支持。在W3C标准支持的浏览器下事件对向是引发事件涵数的第一个参数,参数名随意,在下面的例子中我的事件对象的参数名是evt,也可以定义为其他名字.为了兼容IE浏览器可以这样写
<style type="text/css">
#objbackground:red;width:300px;height:200px;position:relative;
</style>
<div id="obj"></div>
<script type="text/javascript">
document.getElementById("obj").onclick=function(evt)
//获取的这个ID为obj的DIV对象就是个实例引起鼠标事件的元素
//evt代表事件对象(W3C DOM标准下)
var evt=evt || event; //标准化事件对象(W3C DOM 和IE DOM )
evt.Target=evt.Target || evt.srcElement;//标准化事件对象属性<引起事件的元素>
//(W3C DOM 和IE DOM )
evt.layerX=evt.layerX || evt.offsetX;//鼠标相对于引起事件的元素的父元素的X坐标(标准化IE)
evt.layerY=evt.layerY || evt.offsetY;//鼠标相对于引起事件的元素的父元素的Y坐标(标准化IE)
alert("相对这个DIV的X方向的坐标"+evt.layerX+"\n相对这个DIV的Y方向的坐标"+evt.layerY)

</script>
//以上都是手打的。望采纳。可直接保存代码部分复制到页面的body部分。在IE和FF下都可以正常执行。本回答被提问者采纳
参考技术D 不一定

JS 中的 event?event:window.event啥意思?求详解。

<script type = "text/javascript>
function Test(event)
event = event ? event : window.event;

<script>

<input type ="button" value = "clickme" onclick = "Test(this)">

请问:
1,“onclick = "Test(this)"”中的this代表什么?
2,“event = event ? event : window.event; ”应该怎样理解?
a),三元运算符中的问号前面不是应该是个bool值吗?是不是在JS中“undefined”在三元运算符的问号前出现时 可以理解为false?
b),“onclick = "Test(this)"”中的this可以改成event吗?为什么?
c),如果这是个没有参数的方法(函数),我可以在方法中通过“event”获取这个既没有ID也没有name的button的value吗?如下:
<script type = "text/javascript>
function Test()
alert(event.value);

<script>

<input type ="button" value = "clickme" onclick = "Test()">

请区别IE和火狐进行说明,万分感谢。

对其功能我略懂,但是其原理不懂,求详细说明。
不好意思,<script>少打了个/,
"text/javascript>少打了个",- -!

1、this 表示这个<input> 元素,等同于document.getElementById;

2、a)你的理解是正确的,但是不仅只有undifined会被强制转换。

      js的弱类型,让他可以申明后赋任何类型的值。

因此除了bool型的false,number类型的0,String类型的空串,还有null在三元运算符或者判断条件时都会被转成false

其他还有一些,可以看一看比较基础的javascript书和《javascript高级程序设计》,可谓一阅扫百惑,比在网上别人一知半解的讲述了解的更彻底。

b)通过上面的解答,应该知道为什么不能用event代替this了吧

c)js对于函数的定义是非常松,即使你在函数定义时未写任何参数,或者你定义的参数有多个,但是你调用时,一个参数也不填,也不会出错的。

js函数内默认有个变量,保存你的入参叫:arguments

他是一个数组,下标从0开始,

所以获取event可以写成

function Test()
var event = window.event||arguments[0];


在ie下,事件对象是在全局的,也就 window下,做为window的一个属性

 在其他浏览器,都做为方法的第一个参数传入,所以这样写是为了兼容

 

要获取这个button的值,可以先获取这个对象,event既然是事件,肯定是某对象触发的

所以有这要一个方法

ie下是event.srcElement

其他浏览器是event.target

所以获取这个对象和获取事件对象的值可以这样写

function Test()
var event = window.event||arguments[0],
//target 就是这个对象
target = event.srcElement||event.target,
//这个对象的值
targetValue = target.value;

参考技术A 1:this代表点击元素的事件源对象
2:ie的event在全局变量中,其它标准浏览器event做为事件的第一个参数传入。不过一般用e=e||window.event;
a:是的,undefined,null,0,false,""都是假
b:不可以,onclick做为元素属性this已是浏览器的事件源对象了,又不是通过addEventListener绑定的。
c:不可以。别用onclick="xxx()",尝试用addEventListener来绑事件,就能得到。追问

问题2我还是不太理解,能不能麻烦你把我当小白再详细解释一下这一句。谢谢!

以上是关于JavaScript 中的window.event代表的是事件的状态,但是我有一个疑问。。。的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript阻止冒泡事件

检测 JavaScript 中的箭头键按下

javascript中window.event事件用法详解

IE8中的JavaScript事件原型

JavaScript停止冒泡和阻止浏览器默认行为

JavaScript停止冒泡和阻止浏览器默认行为