Javascript - 事件属性的浏览器命名约定让我感到困惑

2024-04-07

我一直想知道为什么不同浏览器的 JavaScript 中事件的 target/sourceElement 的属性名称存在差异。

event.srcElement in Internet Explorer
event.target in most other browsers.

众所周知,Internet Explorer 是一种叛逆的浏览器,尤其是在早期版本中,它遵循自己的 Web API 标准。

尽管此举遭到严厉批评,我们也应该感谢它 http://www.nczonline.net/blog/2012/08/22/the-innovations-of-internet-explorer/,因为它的反叛帮助引入了一些后来成为标准的功能,例如innerHTML和 AJAX 请求。

在这种特殊情况下,会出现约定上的差异,因为旧版本的 IE 使用与其他浏览器使用的标准模型不同的事件模型。随之而来的是一系列不同名称的对象。From MDN https://developer.mozilla.org/es/docs/Web/API/Event/target:

在IE6-8上,事件模型有所不同。事件监听器已附加 使用非标准 element.attachEvent() 方法。在这个模型中, 事件对象有一个 srcElement 属性,而不是目标 属性,与 event.target 具有相同的语义。

Internet Explorer 开始遵循标准更彻底地例如,在更新的版本中,attachEvent is 在 IE11 中完全弃用 https://msdn.microsoft.com/library/ms536343(v=vs.85).aspx.

同样的事情也会发生在其他一些东西上,因此如果你想支持旧版本的 IE,你必须使用某些功能的后备。

至于为什么他们不在 Internet Explorer 中添加别名?好吧,他们最终有时会引入标准 API,并在一段时间内保留自己的标准,我相信事件模型就是这种情况;例如,IE9 似乎同时支持addEventListener and attachEvent.

As to why我认为他们制定了自己的标准最佳答案在这里 https://softwareengineering.stackexchange.com/questions/184449/why-does-internet-explorer-have-so-many-incompatibilities-with-other-browsers是一个很好的解释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript - 事件属性的浏览器命名约定让我感到困惑 的相关文章

  • tampermonkey 脚本跨多个页面运行

    这是我想做的一个例子 每当我们位于目标网址 即 stackoverflow 时 底部就会出现一个带有按钮的粘性页脚 在搜索中输入内容的按钮之一是提交表单 之后 它等待页面加载并执行刚刚加载的页面的操作 即单击第一个链接 我发现仅在提交后单击
  • 角度`@Host`装饰器没有到达顶部?

    在我的主要app ts我已宣布成为全球提供商 providers provide Dependency useValue createDependency AppModule provider Where createDependency只
  • 在 JavaScript 中使用科学计数法的陷阱

    这个问题是not寻求开发人员代码格式化意见 就我个人而言 我更喜欢在 JS 代码中使用科学计数法 因为我相信它更具可读性 为我 6e8比600000000 话虽这么说 我只是在寻找在 JS 中以科学记数法指定数字的潜在风险和缺点 我在野外并
  • JavaScript 日期对象 英国日期

    我有以下代码 datePicker change function dateSet datePicker val dateMinimum dateChange dateSetD new Date dateSet dateMinimumD n
  • JavaScript 中的整数

    MDN https developer mozilla org en JavaScript A re introduction to JavaScript Numbers states JavaScript 中的数字是 双精度 64 位格式
  • 为什么 Chart.js 画布不考虑容器元素的填充?

    我将 Chart js 与简单的折线图一起使用 但 Chart js 计算的宽度和高度属性似乎基于父元素的总宽度和高度 忽略填充 var options maintainAspectRatio false responsive true v
  • 查找椭圆或贝塞尔曲线上的等距点

    目前我正在编写 JavaScript 代码 将对象放置在屏幕上的椭圆上 我试图找到能够解决这个问题之一的算法 椭圆将是完美的 但如果它太昂贵 贝塞尔曲线也可以 抱歉 但不幸的是我的数学不允许我使用我找到的答案 https mathoverf
  • Javascript查找伪元素

    所以我一直在努力CSS 选择器引擎 https github com alpha123 Puma 并且我想支持伪元素 before after selection first line 等 我注意到 Slick Sizzle 和其他一些流行
  • Safari 不设置 cookie,但 Chrome 和 Firefox 会设置

    我正在将请求从本地主机发送到第三方服务器以使用 REST API 获取数据 后端使用cookies JSESSIONID 来了解是否发送数据 在 Chrome 中一切正常 我可以在 Chrome 浏览器的 应用程序 选项卡中看到 Cooki
  • 无法分配“导入类”,因为它是导入 - Javascript

    我一直在初始化一些常量类 export class A foo string b B export class B bar number 然后将它们导入另一个类并在另一个文件中初始化它们 但是 如果我想初始化 A 类时使用 B 类时遇到问题
  • ReactJS React-pdf 错误“无法加载 PDF 文件。”经过一些尝试

    我创建了一个 React js 应用程序create react app我正在尝试react pdf查看 pdf 我遇到的问题是我的代码有时有效 有时无效 当我第一次加载应用程序时 pdf 总是加载得很好 但如果我访问网站上的其他链接 ur
  • JavaScript 中的对象具有属性深度检查

    假设我们有这个 JavaScript 对象 var object innerObject deepObject value Here am I 我们如何检查是否value财产存在吗 我只能看到两种方法 第一 if object object
  • Node.js 无限循环功能,在某些用户输入时退出

    我不太明白节点在异步和循环方面到底是如何工作的 我想在这里实现的是让控制台打印出来 Command 并等待用户的输入 但在等待时我希望它运行 一些随机函数 无休止地直到用户在终端上输入 exit 感谢所有的帮助 以及可能的解释 以便我能理解
  • 笛卡尔坐标到极坐标

    看一下这里的例子 http www brianhare com physicals so html http www brianhare com physics so html 看一下 console log 我在其中使用了这两个主要函数
  • 如何更改 localStorage 项中的单个值?

    我正在尝试更改本地存储中的值 此项是复选框的状态 我希望 每次选中复选框时都将该复选框的值设置为 true 或 false 我尝试了很多方法 直到我意识到不使用 JSON 就无法更改值 要添加我使用的值 localStorage setIt
  • 在固定位置元素上缩放 div 时丢失文本清晰度(模糊)(在移动 safari/webkit 浏览器上)

    附有重现代码 它 基本上 包含两个 div 元素 红色 固定 和黑色 带文本 单击黑色 div 时 它会放大 并且其上的文本保持清晰 然而 在 4 秒后 黑色 div 的 z index 发生了变化 黑色 div 变成了over红色分区 B
  • grunt jasmine-node 测试运行两次

    我设置 grunt 来运行 node js 茉莉花测试 由于某种原因 使用此配置 结果总是显示双倍的测试 这是我的配置 我在用着茉莉花节点 https github com jasmine contrib grunt jasmine nod
  • Soundcloud CORS

    正如我在文档中读到的那样 Soundcloud api 应该支持 cors http developers soundcloud com docs api guide crossdomain http developers soundclo
  • 使用选择器获取最接近的父元素(不包括当前元素)

    我正在尝试获取元素的最接近的父元素 看着 closest https developer mozilla org en US docs Web API Element closest 如果选择器与元素匹配 它似乎会返回元素本身 Closes
  • 如何导出从 HTML DOM 解析器检索到的所有图像?

    我想要 使用从我的网站获取所有图像PHP 简单 HTML DOM 解析器 http simplehtmldom sourceforge net 并将它们全部导出到我的桌面ALL立刻 Not右键单击保存或屏幕截图 OPTIONAL 保存所有h

随机推荐