AFAIK,您无需在onclick中指定协议:
onclick="javascript:myFunction()" 坏
onclick="javascript:myFunction()"
onclick="myFunction()" 好
onclick="myFunction()"
今天,我在GoogleAnallytics上注意到他们正在使用它:
<a href="http://www.example.com" onClick="javascript: pageTracker._trackPageview('/outgoing/example.com');">
这个例子是完全错误的,还是有理由指定javascript:除href?以外的其他内容?
javascript:
href
这里的一些响应声称“javascript:”前缀是“过去的遗留物”,这意味着浏览器有意对它进行了特殊处理,以实现向后兼容。是否有确凿的证据证明是这种情况(有人检查过源代码)吗?
<span onclick="javascript:alert(42)">Test</span>
对我来说,它的意思是:
javascript: alert(42);
意思是,“ javascript:”只是一个标签,没有任何作用。这也有效:
<span onclick="foobar:alert(42)">Test</span>
更新:
我做了一个小实验,结果是,是,“javascript:”是由IE专门处理的,但Firefox,Safari,Opera或Chrome绝对不是这样处理的:
<span onclick="javascript:while (true) { alert('once'); break javascript; }">Test</span>
在非IE上,这将仅一次警告一次,然后退出循环。在IE上,出现“找不到标签”错误。以下内容在所有浏览器中均可正常运行:
<span onclick="foo:while (true) { alert('once'); break foo; }">Test</span>