4

我是 JavaScript 新手。我很好奇浏览器如何使onClick属性起作用。你在 html 中有这个:

<button id="1" onClick="reply_click(this.id)">B1</button>

浏览器如何执行(总是 javascript?)脚本功能?

我想这类似于评估给 onClick 的字符串。

但我有这样的疑问:这里的应用标准是什么?浏览器如何知道使用哪种脚本语言?javascript引擎是如何this填充的?脚本在什么上下文中执行?返回值会发生什么?我想阅读什么以了解在使用这些属性时可以依赖什么?

你能帮我理解发生了什么吗?

4

4 回答 4

6

当您设置onclick属性时;浏览器引用你设置的节点,我们称之为引用button,然后进行转换

onclick="/* code */"

button.onclick = function (event) {eval(/* code */);};

然后触发点击事件时,可以认为该函数是这样调用的

button.onclick.call(button, click_event);

给出 的onclick上下文button,因此thisbutton。它被包装在它自己的函数中,所以如果某些东西是vard ,它将不会被设置在全局范围内。


返回值会发生什么?

返回false等效于调用,此处event.preventDefault();描述了确切的行为。


浏览器如何知道使用哪种脚本语言?

除非另有明确说明,否则假定为JavaScript


我想阅读什么以了解在使用这些属性时可以依赖什么?

不要学习这些HTML属性,它们已经过时,可能很危险,并且会将您的HTMLJavaScript混合在一起。而是学会使用EventTarget.addEventListener

于 2013-10-25T12:02:54.543 回答
4

呸,好多问题啊!

问:浏览器如何执行(总是 javascript?)脚本功能

Q. 浏览器如何知道使用哪种脚本语言

A.现代浏览器总是假定 Javascript,除非它带有标签前缀,例如onclick="vbscript:alert('Hello World!');"

问:这是如何被 javascript 引擎填充的

A. this总是指onclick被添加的元素,在这种情况下是button元素

Q. 脚本在什么上下文中执行

A.脚本在窗口范围内执行。

问:返回值会发生什么

A.返回值决定浏览器是否应该继续执行该元素的默认代码。如果按钮是提交按钮并且您返回false,您的表单将不会被发布

问:我想阅读什么以了解在使用这些属性时我可以依赖什么

A.一本 Javascript 书籍。看看亚马逊上的顶级 Javascript 书籍。

于 2013-10-25T12:04:51.447 回答
1

浏览器采用 JavaScript,主要是因为尽管理论上它可以是任何脚本语言,但实际上 JavaScript 已经胜出。

它以触发点击事件的元素onclick执行代码。this

返回值的使用方式与 for 完全相同element.onclick = function () {...}

事实上,整个事情相当于:

var element = document.getElementById('1');
element.onclick = new Function(element.getAttribute('onclick'));
于 2013-10-25T12:03:53.527 回答
0

浏览器如何知道使用哪种脚本语言?

您需要写出<script>标签才能编写脚本。如果没有暗示脚本类型,则默认脚本是 JavaScript。如果您使用各种 JavaScript 库或类似的 jQuery,那么您需要在调用前使用 $ 或 jQuery。

返回值会发生什么?

没有真正的返回值。这基本上就是您使用 onClick 调用的函数中发生的情况。

于 2013-10-25T12:11:34.963 回答