gpt4 book ai didi

javascript - 检查事件处理程序参数

转载 作者:行者123 更新时间:2023-12-02 19:22:40 25 4
gpt4 key购买 nike

我在学习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 新手,下面的代码是由专家编写的。那么,你能告诉我为什么她使用它而不是我下面写的吗?

最佳答案

你已经成功了一半...evt在客户端运行被称为 IE 的浏览器的悲惨借口时才会被定义。

IE 不会将事件对象传递给处理程序,但只有 1 个全局事件对象。这就是为什么您的事件处理程序会检查事件对象是否已作为参数传递,如果没有,它将获取全局事件对象。不过,这可以写得更短:

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你相信。
双管道 || 被称为默认运算符。

关于javascript - 检查事件处理程序参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com