AFAIK,您永远不需要在onclick中指定协议:
onclick="javascript:myFunction()"
坏
onclick="myFunction()"
好
今天我在Google Anallytics的这篇文章中注意到他们正在使用它:
这个例子是完全错误的,还是有理由javascript:
在除了a之外的任何东西中指定href
?
这里的一些回复声称"javascript:"前缀是"过去的剩余",暗示它是故意的,由浏览器专门处理以实现向后兼容.是否有确凿证据证明是这种情况(有人检查过源代码)吗?
Test
对我来说,这只是作为:
javascript: alert(42);
意思是,"javascript:"只是一个标签,没有任何效果.这也有效:
Test
更新:
我做了一个小实验,事实证明,是的,"javascript:"是由IE专门处理的,但Firefox,Safari,Opera或Chrome绝对不是这样:
Test
在非IE上,这只会警告"一次",一次然后突然退出循环.在IE上,我收到"找不到标签"错误.以下适用于所有浏览器:
Test
更新2:
我刚刚在上面的一个答案中意识到链接http://crisp.tweakblogs.net/blog/the-useless-javascript-pseudo-protocol.html几乎都在谈论同样的事情.
它永远不需要锚,永远不是好习惯.锚点仅用于导航.有关此主题的文章是无用的JavaScript:伪协议.
在开始时,您也可以在Internet Explorer中使用VBScript而不是JavaScript,因此指定"javascript:..."是标准的.
今天,好吧,它没有受到伤害......将来可能总会有其他一些想成为浏览器的脚本语言.
请参阅指定脚本语言(在HTML 4.01规范,脚本中的18.2.2中).
我一直认为这是一个糟糕的用法,因为您可以使用前缀在URL中调用JavaScript javascript:
:
(Web表单,某人?)
只有无知的网络开发人员从未意识到事件声明和href声明之间的区别使用它.
我想说,即使事件属性在大多数情况下都是不好的做法,并且获取事件的首选方法是使用.attachEvent(Internet Explorer)和addEventListener(其他浏览器,像往常一样).
最后......谷歌并不总是全能的上帝.他们往往更关心的是,东西的工作原理不是一直遵循标准.