之间有什么区别吗?
1 : <a href="javascript:MyFunction()">Link1</a>
和
2 : <a href="#" onclick="MyFunction()">Link2</a>
? 是否会以任何方式影响页面性能?
答案 0 :(得分:10)
如果您的元素实际上不应该在某个地方链接用户,不会使其成为锚元素。如果您使用<a>
标签只是为了获得下划线/光标更改 - 请不要。在<span>
(或其他元素)上使用CSS。
span.link {
text-decoration: underline;
color: blue;
cursor: pointer;
}
只有在想要将用户链接到某个地方时,才能保留HTML语义并使用锚元素。
答案 1 :(得分:7)
没有性能差异。
第一个是垃圾,因为没有启用JS的用户会完全失败。
第二个仍然是废话,但如果href
指向未启用JS的用户的URL,则会更好。
答案 2 :(得分:4)
onclick版本允许您将'this'作为参数传递,因此您可以返回点击来自的标记/对象。协议方法无法实现:
<a href="#" onclick="alert(this.innerHTML)">yo yo yo</a>
会吐出一个警告弹出窗口“yo yo yo”,而
<a href="javascript:alert(this.innerHTML)">yo yo yo</a>
将吐出'undefined'。
答案 3 :(得分:1)
如果用户没有启用j,则href =“javascript:doSomething”表示您没有要回退的网址。
因此,设置href =“something.html”和onclick =“return doSomething()”通常被认为更好,因为如果禁用js,您可以导航到新页面,但如果启用了js,则可以返回false防止导航到链接并在没有页面刷新的情况下在同一页面中显示内容。
更好的是,不要添加onclick内联,只需在页面加载时添加js处理程序。这是不引人注目的方式
答案 4 :(得分:-1)
功能有所不同,第一种不会尝试处理链接。第二个。
然而,我同意Coronatus - 两种方法都不理想。我建议研究不引人注目的JavaScript(可能使用jQuery),因为您可以动态地向元素添加点击事件。
答案 5 :(得分:-1)
如果您的网站需要Javascript才能正常运行,那么href中的Javascript最好,因为它会在状态栏中显示链接并保持代码紧凑。在href中还提供没有鼠标的键盘导航。如果您的网站需要在没有Javascript的情况下运行,那么您必须使用onclick,以便href可以在其中包含链接。在单独的Javascript文件中添加操作无法保持代码和&amp;数据紧紧束缚。