为什么我们使用Javascript事件
Why we use Javascript event
我有一个获取键盘键值的函数。我想知道为什么我们需要在参数中使用事件
<form>
Char: <input type="text" id="char" size="15" /> Keycode: <input type="text" id="keycode" size="15" />
</form>
<script type="text/javascript">
var charfield=document.getElementById("char")
charfield.onkeydown=function(event){
//var e=window.event || e
document.getElementById("keycode").value=event.keyCode
}
</script>
JS 是事件驱动的,无法访问事件对象将与您的自行车一起参加 F1:您可以看到比赛(汽车 === 事件)飞过,但您无法到达它们......(对不起,这个可怕的类比,但你明白了)。
要增加/启用更多的交互性,您必须知道客户端做什么,以便您可以做出相应的响应。例如,如果用户单击,您可能想知道他在页面上单击的哪个位置。所有这些以及更多内容都可以在事件对象中找到。没有这个,就像去打仗,手无寸铁,蒙着眼睛,双手被绑在背后。
想想看:在任何其他编程语言中,你都不会问同样的问题,其中事件是至关重要的(如C++,C#,Java,ActionScript......),任何直接从用户那里获得输入的东西,真的。
好吧,两个答案(AlphaMale和chiborg)都告诉你事件对象的用途。行var e= window.event || e;
在您的情况下不起作用,但是,因为您的默认运算符已经混乱了。试试这个:
charfield.onkeydown = function (e)//call parameter e, rather then event
{
e = e || window.event;//no var, as a parameter, it's already declared, won't set a global
var key = e.keyCode || e.which;//another default operator here... thx to IE
//and so on
if (e.preventDefault)
{
e.preventDefault();
e.stopPropagation();
return false;
}
e.returnValue = false;
e.cancelBubble = true;
};
因此,这里有一个可以(并且经常会)在事件对象上使用的方法的一小部分列表。
e = e || window.event;
与e = e !== undefined ? e : window.event;
相同 由于IE不会将事件对象传递给处理程序,因此您必须自己获取它(它是全局对象的属性,因此window.
)。为什么这对你不起作用是因为你让JS引擎在window.event
(仅限IE)和e
之间进行选择,你声明的是,实际的事件对象存储在event
参数中。你应该写event = event || window.event;
第二行var key = e.keyCode || e.which;
获取按下的键的键代码,IE 和 W3C 再次同意不同意此属性的名称。事实上,他们一直只同意 1 处房产:type
.这里还有一些属性
最后,我调用了几个方法,允许您阻止/阻止事件。假设您正在询问电话号码,并且用户开始键入文本。使用任何onkey*
事件,你可以对此进行选取,并使用preventDefault
、stopPropagation
方法来阻止接受输入。(还有更多的东西,但我现在不讨论)。
同样,大多数浏览器都有这些方法,但IE有一个不同的事件模型 在这里详细阅读它 随之而来的是停止IE事件的不同看法:returnValue
和cancelBubble
属性,后者特别烦人,因为如果您不希望发生某些事情,请将其设置为true...但这只是我的意见。
您可以使用事件参数做更多的事情,但简而言之 - 再次 - JS 是事件驱动的,无法访问事件对象会让您瘫痪......
charfield.onkeydown = function(event){ ... }
在这里,参数event
或有时用作 Event 对象的实例e
。它是为该实例指定的变量名称。触发事件时,event object
会自动传递给event handler
。
对象为事件处理程序提供了一些有用的属性和方法。
不同的浏览器有不同的事件模型。该行
var e=window.event || e
适用于不采用事件函数参数的 Internet Explorer。
有关详细信息,请参阅此文章。
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 在同一个javascript事件处理程序中调用不同的函数
- Javascript事件;在新选项卡中打开”;
- 存在每个时间元素的javascript事件
- Javascript事件.锚的目标问题
- 带有参数的Javascript事件处理程序
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- firefox中的Javascript事件范围问题
- Firefox中的JavaScript事件参数
- 在动态加载的PHP表单上放置JavaScript事件
- 如何在Javascript事件上从JSNI设置GWTClass字段
- Javascript事件发射器一次处理多个事件
- 在下拉式javascript事件监听器中选择时触发事件
- 在javascript中导入xlsx文件时,如何手动强制javascript事件
- 显示触发的JavaScript事件
- 正在取消IE11中的JavaScript事件
- 页面卸载期间的JavaScript事件循环
- 存在其他参数时访问Javascript事件
- 阻止Javascript事件影响子元素
- 如何在事件处理程序中获取 javascript 事件对象