AFAIK,您永远不需要在onclick中指定协议:
onclick="javascript:myFunction()"
错误
onclick="myFunction()"
好
今天我在Google {@}}的this article注意到他们正在使用它:
<a href="http://www.example.com" onClick="javascript: pageTracker._trackPageview('/outgoing/example.com');">
此示例是否完全错误,或者是否有理由在javascript:
以外的任何内容中指定href
?
答案 0 :(得分:45)
这里的一些回复声称“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>
更新2:
我刚才意识到上面其中一个答案中的链接http://crisp.tweakblogs.net/blog/the-useless-javascript-pseudo-protocol.html几乎都在谈论同样的事情。
答案 1 :(得分:7)
它永远不需要锚,永远不是好习惯。锚点仅用于导航。 有关此主题的文章是 The useless JavaScript: pseudo-protocol 。
答案 2 :(得分:5)
一开始,您也可以在Internet Explorer中使用VBScript而不是JavaScript,因此指定“javascript:...”是标准的。
今天,它没有受到伤害......将来可能总会有其他一些想要浏览器的脚本语言。
答案 3 :(得分:5)
请参阅 Specifying the scripting language (在 HTML 4.01规范中的18.2.2,脚本中)。
答案 4 :(得分:5)
我一直认为,基于您可以使用javascript:
前缀在URL内调用JavaScript,这是不好的用法:
<a href="javascript:void(alert('really bad usage!'))">
(Web Forms,某人?)
只有那些从未意识到事件声明和href声明之间存在差异的无知网络开发人员才使用它。
我想说,即使是事件属性在大多数情况下都是不好的做法,并且获取事件的首选方法是使用.attachEvent(Internet Explorer)和addEventListener(其他浏览器,像往常一样)。 / p>
最后......谷歌并不总是全能的上帝。他们往往更关心的是,东西的工作原理不是一直遵循标准。
答案 5 :(得分:2)
我认为“javascript:”前缀是旧时代的遗留物,当时仍然存在模糊的可能性除了JavaScript以外的任何其他可以处理事件。
今天它是可选的,并且出于向后兼容的原因而保留。但我不会说这是坏,这只是不必要的。
答案 6 :(得分:2)
在Internet Explorer中,可以将页面的默认语言设置为VBScript。在早期,人们总是认为可以在浏览器中使用另一种语言进行脚本编写。事实证明,这种语言没有实质性的实现。
我自己也不打扰这个语言前缀。
答案 7 :(得分:0)
这对您的维护程序员来说是个好习惯。编译器知道差异,但那个年轻的,刚刚离开大学的Web开发人员可能不会。