首页 > 解决方案 > chrome 71 不会在 onclick 事件中检测到 id,除非它是 this.id

问题描述

我有一个这样的html元素:

<select id="myselect" onclick="jsDoSomething(id)"><option>1</option><option>2</option></select>

直到 Chrome 70,一切正常,在 Chrome 71 中,函数id内部为 null jsDoSomething。我必须将其更改this.id为才能正常工作。这是 Chrome 71 的错误还是...功能?

先感谢您。

编辑:这发生在两个标签上selecta而不是button标签上。

编辑2:jsfiddle:http: //jsfiddle.net/5L0djvqy/10/

标签: javascriptgoogle-chrome

解决方案


从这里:

https://html.spec.whatwg.org/multipage/webappapis.html#the-event-handler-processing-algorithm

范围

如果 eventHandler 是一个元素的事件处理程序,那么让 Scope 为 NewObjectEnvironment(document, the global environment)

否则,eventHandler 是 Window 对象的事件处理程序:设 Scope 为全局环境。

如果表单所有者不为空,则设 Scope 为 NewObjectEnvironment(form owner, Scope)。

如果 element 不为 null,则让 Scope 为 NewObjectEnvironment(element, Scope)

因此,这种行为似乎是标准的(令人惊讶的是,我从不这样做),所以 Chrome 上似乎有些问题。

但是,我在 Linux 上的 Chrome 71 上测试了一个简单的代码,我得到了“预期”的结果。也许您在某处损坏了 HTML 的结构,并且该元素不是当前的选择框


推荐阅读