cgp*_*cgp 20 javascript correctness
我的印象是,我只需要在URL属性中使用JavaScript时指定"协议",例如在hrefs中.这是唯一"有用"的背景javascript:吗?
明智的:
<a href="javascript:alert('Hello')">World!</a>
Run Code Online (Sandbox Code Playgroud)
愚蠢:
<form onsubmit="javascript:alert('oops!')">
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?或者是否需要注意一些模糊的bug /用例?
正如其他答案所提到的,避免使用javascript:href链接,并且在事件处理程序属性中完全没有必要.但是,由于A标签有时在语义上仍然正确,因此href如果希望将您的:link和:hoverCSS样式应用于Internet Explorer中的元素,则需要在属性中添加一些内容.在这种情况下,使用:
<a href="#" onclick="doSomething(); return false;">Link</a>
Run Code Online (Sandbox Code Playgroud)
要么
<a href="javascript://" onclick="doSomething();">Link</a>
Run Code Online (Sandbox Code Playgroud)
javascript协议存在一个(有点模糊)错误- 在Internet Explorer*中,当您单击链接时,它会认为您正在离开页面.如果您使用的是window.onbeforeunload,则此时将显示您的导航消息.仅仅因为这个原因,我们已经完全停止使用javascript协议,因此我们没有显示此错误,因为我们在向某个页面添加导航消息时忘记检查它.
*我可能应该在我第一次写这个时指定版本.我根本不记得了,但是为了防止这个bug只存在于IE 6或7等现在大多已经不存在的浏览器中,你最好自己测试一下.
永远不要指定它.在<a>标签中执行此操作是错误的,而应将其编码为:
<a href='#' onclick='alert("Hello")'>World</a>
Run Code Online (Sandbox Code Playgroud)
这是过去几天的残余.我唯一能想到它在哪里使用的将是浏览器地址栏(和书签书签).将它保留在您的页面之外.
| 归档时间: |
|
| 查看次数: |
6353 次 |
| 最近记录: |