鉴于此代码:
<button id="blah" onclick="alert(id)">Click me</button>
单击该按钮将发出“blah”警报。为什么id
属性成为范围内可见的变量onclick
处理程序?
另一个例子:
<button style="font-size:200%" onclick="console.log(style)">Click me</button>
在这里我们看到style
指的是CSSStyleDeclaration
对象,而不是属性的字符串值。这类似于我们通过引用按钮元素的索引得到的结果attributes
属性,或通过属性属性,例如this.style
(getAttribute
将返回字符串值)。
此行为在哪里指定?
http://jsfiddle.net/b8mpJ/ http://jsfiddle.net/b8mpJ/
因为它是在 Web 应用程序 API 中指定的。引用什么WG的生活水平 http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handler-attributes:
当用户代理要获取事件处理程序 H 的当前值时,它必须运行以下步骤:
[...]使用上面获得的脚本执行环境,创建一个函数对象:
[...] 词汇环境范围
-
令 Scope 为 NewObjectEnvironment(文档,全局环境) 的结果。
-
如果表单所有者不为空,则令 Scope 为 NewObjectEnvironment(>form Owner, Scope) 的结果。
-
如果 element 不为 null,则令 Scope 为 NewObjectEnvironment(element, Scope) 的结果。
NewObjectEnvironment() 在 ECMAScript 第 5 版中定义第10.2.2.3节 http://www.ecma-international.org/ecma-262/5.1/#sec-10.2.2.3。您可能更了解它的效果with http://www.ecma-international.org/ecma-262/5.1/#sec-12.10声明(也使用它的地方)。换句话说,当在事件处理程序的函数中查找特定名称绑定时,也会检查目标元素的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)