javascript:method()和just plain method()有什么区别

javascript:method()和just plain method()有什么区别,javascript,onclick,Javascript,Onclick,我在JavaScript中遇到了以下语法 <img style="padding-left:8px;" id="testIcon" align="middle" src="/images/test.png" onclick="javascript:testMethod()"/> 我想知道上面和下面的区别是什么 <img style="padding-left:8px;" id="testIcon" align="middle" src="/images/test.png"

我在JavaScript中遇到了以下语法

<img style="padding-left:8px;" id="testIcon" align="middle" src="/images/test.png" onclick="javascript:testMethod()"/>

我想知道上面和下面的区别是什么

<img style="padding-left:8px;" id="testIcon" align="middle" src="/images/test.png" onclick="testMethod()"/>


我猜前面的语法是可用的,因为有些浏览器支持JavaScript以外的脚本语言。例如,IE支持VBScript。如果您有一个包含同名JavaScript和VBScript函数的页面,您可能可以使用该语法来消除歧义。

伪协议
JavaScript
的使用源于它在锚定标记的
href
属性中使用的时间:

<a href="javascript:doSomething()">Click me</a>
它什么也不做


javascript:
被视为标签(javascript语言鲜为人知的一部分),是无害的。因为浏览器知道,
onclick
调用脚本,所以不需要任何特殊的东西。

我猜前面的语法是可用的,因为有些浏览器支持JavaScript以外的脚本语言。例如,IE支持VBScript。@nix您的评论似乎是一个答案。离题:使用内联事件侦听器是一种不好的做法。最好用JS.Okay tx为repy添加列表器。有相关文档吗?我查看了HTML4.01和5规范,没有找到任何关于
javascript:
URI或事件处理程序中类似它们的内容。可能我遗漏了一些东西,也可能是一些浏览器所做的非标准的事情。至少在
href
属性的上下文中,“javascript:something”是一个javascript URI。“javascript:”是URI模式,而不是javascript语言中的某种标签。正确,@nix,这就是为什么我使用术语
伪协议
,因为没有官方的
javascript:
协议。相同的代码在两个属性中都起作用,这是一个令人高兴的巧合。我不确定这是否是一种语言特性(标签)或是对不良开发人员行为的编码保护。@BrianNickel我把它归结为“cargo cult”编程。有人在某处看到了它,只是复制了它,却不知道它为什么或做了什么。唉,JavaScript遭受了很多这样的问题。
<img src="images/test.png" onclick="javascript:testMethod()"/>