检查事件处理程序参数
Check event handler parameter
我在学习JavaScript:时得到了这段代码
myLink.onmouseover = showLinkAttr;
function showLinkContent(evt) {
if (evt) {
var url = evt.target;
}
else {
evt = window.event;
var url = evt.srcElement;
}
..............
我不知道为什么我们需要在创建事件处理程序参数evt
之前检查它。我认为这段代码是多余的,因为evt
不存在(这段代码在脚本文件的开头),表明我们应该在不检查的情况下创建它,比如:
myLink.onmouseover = showLinkAttr;
function showLinkContent(evt) {
evt = window.event;
var url = evt.srcElement;
然而,由于我是JavaScript的新手,下面的代码是由一位专家编写的。那么,你能告诉我她为什么用它而不是我下面写的那个吗?
你已经成功了一半。。。当客户端运行IE浏览器的悲惨借口时,evt
将仅未定义。
IE不将事件对象传递给处理程序,但只有一个全局事件对象。这就是为什么事件处理程序会检查事件对象是否已作为参数传递,如果没有,则会获取全局事件对象。这可以写得更短:
evt = evt || window.event;//evt is equal to itself, if it's not undefined, else it's a reference to the global object
目标也是如此(你称之为var url
,这很令人困惑,也许是错误的):
var target = evt.target || evt.srcElement;
target
(或srcElement
)返回对DOM元素(触发事件的元素)的引用,而不是像varname让您相信的那样返回url
双管||
被称为默认操作符。
该代码针对不同浏览器之间的不一致性。有关详细信息,请参阅本文:http://www.quirksmode.org/js/introevents.html
相关文章:
- 检查事件处理程序参数
- 带有参数的Javascript事件处理程序
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 使用应用程序状态js和视图在angular js url上传递两个参数
- 将作用域绑定到事件处理程序,但保留原始参数
- 将参数传递给函数,同时保留事件处理程序
- 将参数传递给reactjs单击处理程序
- 如何将多个参数传递给输入's onChange处理程序
- 在动态创建的元素中包含参数的事件处理程序
- JS:删除带有接受参数的处理程序的事件侦听器
- 如何在Jasmine中将参数从规范传递给报告程序
- 如何将参数传递到节点's Q库's(去神化)promise处理程序
- Node.js如何知道回调的第一个参数是否是错误处理程序
- 将参数传递给jQuery中的事件处理程序
- 在express应用程序中,请求参数两次附加到URL
- 将一个额外的参数传递给分页扩展程序
- 如何将对象参数传递给事件处理程序
- 是否可以获得“”的事件对象;当前“;或“;最后一个“;事件,而不将其作为处理程序中的参数接收
- 用于Cordova应用程序的Javascript SQLite-使用参数搜索,其中字符串包含子字符串大小写insenst
- 如何在事件处理程序中包含函数(及其参数),而不在页面加载时调用该函数