一尘不染

您是否需要在onclick中指定“ javascript:”?

javascript

AFAIK,您无需在onclick中指定协议:

onclick="javascript:myFunction()"

onclick="myFunction()"

今天,我在GoogleAnallytics上注意到他们正在使用它:

<a href="http://www.example.com" onClick="javascript: pageTracker._trackPageview('/outgoing/example.com');">

这个例子是完全错误的,还是有理由指定javascript:href?以外的其他内容?


阅读 265

收藏
2020-05-01

共1个答案

一尘不染

这里的一些响应声称“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>
2020-05-01