Dio*_*ane 44 javascript google-api
AFAIK,您永远不需要在onclick中指定协议:
onclick="javascript:myFunction()" 坏
onclick="myFunction()" 好
今天我在Google Anallytics的这篇文章中注意到他们正在使用它:
<a href="http://www.example.com" onClick="javascript: pageTracker._trackPageview('/outgoing/example.com');">
Run Code Online (Sandbox Code Playgroud)
这个例子是完全错误的,还是有理由javascript:在除了a之外的任何东西中指定href?
Ate*_*ral 45
这里的一些回复声称"javascript:"前缀是"过去的剩余",暗示它是故意的,由浏览器专门处理以实现向后兼容.是否有确凿证据证明是这种情况(有人检查过源代码)吗?
<span onclick="javascript:alert(42)">Test</span>
Run Code Online (Sandbox Code Playgroud)
对我来说,这只是作为:
javascript:
alert(42);
Run Code Online (Sandbox Code Playgroud)
意思是,"javascript:"只是一个标签,没有任何效果.这也有效:
<span onclick="foobar:alert(42)">Test</span>
Run Code Online (Sandbox Code Playgroud)
更新:
我做了一个小实验,事实证明,是的,"javascript:"是由IE专门处理的,但Firefox,Safari,Opera或Chrome绝对不是这样:
<span onclick="javascript:while (true) { alert('once'); break javascript; }">Test</span>
Run Code Online (Sandbox Code Playgroud)
在非IE上,这只会警告"一次",一次然后突然退出循环.在IE上,我收到"找不到标签"错误.以下适用于所有浏览器:
<span onclick="foo:while (true) { alert('once'); break foo; }">Test</span>
Run Code Online (Sandbox Code Playgroud)
更新2:
我刚刚在上面的一个答案中意识到链接http://crisp.tweakblogs.net/blog/the-useless-javascript-pseudo-protocol.html几乎都在谈论同样的事情.
我一直认为这是一个糟糕的用法,因为您可以使用前缀在URL中调用JavaScript javascript::
<a href="javascript:void(alert('really bad usage!'))">
Run Code Online (Sandbox Code Playgroud)
(Web表单,某人?)
只有无知的网络开发人员从未意识到事件声明和href声明之间的区别使用它.
我想说,即使事件属性在大多数情况下都是不好的做法,并且获取事件的首选方法是使用.attachEvent(Internet Explorer)和addEventListener(其他浏览器,像往常一样).
最后......谷歌并不总是全能的上帝.他们往往更关心的是,东西的工作原理不是一直遵循标准.
| 归档时间: |
|
| 查看次数: |
17211 次 |
| 最近记录: |