我是javascript的新手。我很好奇浏览器如何使onClick
属性起作用。
你有一个html:
<button id="1" onClick="reply_click(this.id)">B1</button>
浏览器执行(allways javascript?)脚本函数的功能是什么?
我想这类似于评估给onClick的字符串。
但我怀疑这些:这里的适用标准是什么?浏览器如何知道使用哪种脚本语言?如何通过javascript引擎填充this
?脚本在什么上下文中执行?返回值会发生什么?在处理这些属性时,我想了解什么才能知道什么?
你能帮我理解发生了什么吗?
答案 0 :(得分:6)
设置 onclick 属性时;浏览器接受你设置它的节点的引用,让我们调用这个引用button
,然后进行转换
onclick="/* code */"
到
button.onclick = function (event) {eval(/* code */);};
当单击事件被tirggered时,可以将该函数视为像这样被调用
button.onclick.call(button, click_event);
onclick
的上下文button
以及this
的上下文为button
。它包含在它自己的函数中,所以如果某些东西是var
d,它将不会在全局范围内设置。
返回值会怎样?
返回false
相当于调用event.preventDefault();
,确切的行为描述为here。
除非另有明确说明,否则浏览器如何知道使用哪种脚本语言?
假设 JavaScript
在处理这些属性时,我想了解哪些内容可以依赖?
不要学习这些 HTML 属性,它们已过时,可能很危险并且将您的 HTML 和 JavaScript 混合在一起。而是学会使用EventTarget.addEventListener
答案 1 :(得分:4)
Phew,这是很多问题!
Q值。浏览器执行什么(allways javascript?)脚本函数
Q值。浏览器如何知道使用哪种脚本语言
A。现代浏览器总是假设Javascript,除非它带有标签前缀,例如onclick="vbscript:alert('Hello World!');"
Q值。如何通过javascript引擎填充
A。 this
始终引用添加了onclick
的元素,在本例中为button
元素
Q值。在什么上下文中执行脚本
A。脚本在窗口范围内执行。
Q值。返回值会发生什么
A. 返回值确定浏览器是否应继续执行此元素的默认代码。如果该按钮是提交按钮并且您返回false
,则不会发布您的表单
Q值。在使用这些属性
时,我想了解什么才能知道我可以依赖什么?
A。一本Javascript书。看看亚马逊上的顶级Javascript书籍。
答案 2 :(得分:1)
浏览器假设JavaScript,主要是因为虽然理论上 可以是任何脚本语言,但实际上JavaScript已经赢了。
它执行onclick
中的代码,其中this
是触发点击事件的元素。
返回值的使用方式与element.onclick = function () {...}
完全相同。
事实上,整个事情的作用相当于:
var element = document.getElementById('1');
element.onclick = new Function(element.getAttribute('onclick'));
答案 3 :(得分:0)
浏览器如何知道使用哪种脚本语言?
您需要写出<script>
标签才能编写脚本。如果没有隐含脚本类型,则默认脚本为JavaScript。
如果您正在使用各种JavaScript库或类似jQuery,那么您需要在调用前使用$或jQuery。
返回值会怎样?
没有真正的回报价值。它基本上就是你用onClick调用的函数中发生的事情。