gpt4 book ai didi

javascript - 为什么 Chrome 对内联事件使用 `with`

转载 作者:数据小太阳 更新时间:2023-10-29 05:16:11 25 4
gpt4 key购买 nike

如果你看一下this fiddle在 Chrome 中并在打开 js 控制台的情况下单击触发器文本,您将看到:

enter image description here

所有这些 with block 的原因是什么,它的值(value)是什么?

最佳答案

在我看来,当事件处理程序被指定为 HTML“onclick”属性时,浏览器如何为事件处理程序创建函数。我认为它的作用是:

  • 为事件对象和您提供的代码创建一个带有单个参数的事件处理函数;
  • 使元素的属性(<a> 标记)、空对象 (?) 和文档对象看起来是该函数中代码的可用符号。

this[0]<a>元素本身,this[1]看起来像一个空的 Object 实例,并且 this[2]是文档对象。这意味着在您作为“onfoo”事件处理程序属性的一部分编写的代码中(不是从直接 JavaScript 代码绑定(bind)的任何普通事件处理程序中的代码),可以引用目标元素(您为其设置属性的元素)和文档元素的属性就好像它们存在于作用域链中一样。

如果稍微更改一下代码:

$('<a href=# onclick="console.log(baseURI);"> ...

然后您将获得 <a> 的“baseURI”属性的值元素。无需在“baseURI”前加上任何明确引用 <a> 的 DOM 节点的内容。元素;它只是“在那里”,就好像它是用 var 声明的一样在一些封闭范围内。

(现在正在检查 w3c 规范 ...)编辑 — 我还没有发现任何规定哪些符号应该可用于事件处理程序中的脚本代码。这真的很奇怪。

再次编辑 — Firefox 似乎做同样的事情,但我没有看到明确的 with任何地方的陈述。

关于javascript - 为什么 Chrome 对内联事件使用 `with`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14324935/

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