【发布时间】:2020-06-03 01:00:04
【问题描述】:
考虑以下代码 sn-p。
function func1() {
console.log('func1 fired');
}
function func2() {
console.log('func2 fired');
}
<button onclick="[[[func1(), func2()]]]">Click Me</button>
请注意,onclick 事件属性的值被多对方括号包围(我任意使用了三个,但括号的数量似乎无关紧要)。该代码在 Firefox 和 Chrome 中有效,但 为什么 有效?这个标准是在某处记录的,还是只是浏览器试图提供帮助。
【问题讨论】:
-
虽然从理解 JS 如何在 HTML 上下文中执行而言,这是一个非常有趣的问题,但实际上:不要使用
onclick,也不要教onclick。在加载了defer属性的脚本中获取 JS 端的那个按钮(是的,甚至旧 IE 版本也支持)并改用button.addEventListener("click", ...)。 -
它也适用于
<button onclick="[[[[[[[[[[[[func1(), func2()]]]]]]]]]]]]">Click Me</button> -
@Mike'Pomax'Kamermans 我实际上并没有使用它,也许我应该在问题中指出它。我实际上在 [another question] (stackoverflow.com/a/54154706/3977276) 中发现了这个 sn-p,它激起了我的兴趣。
标签: javascript html