以下是构建链接的两种方法,该链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好。?

函数myJsFunc(){警报(“myJsFunc”);}<a href=“#”onclick=“myJsFunc();”>运行JavaScript代码</a>

or

函数myJsFunc(){警报(“myJsFunc”);}运行javascript代码</a>


当前回答

我想说,最好的方法是将href锚定到一个你从未使用过的ID上,比如#Do1Not2Use3This4Id5或类似的ID,你100%确信没有人会使用,也不会冒犯他人。

Javascript:void(0)是一个坏主意,违反了启用CSP的HTTPS页面上的内容安全策略https://developer.mozilla.org/en/docs/Security/CSP(感谢@jakub.g)仅使用#将使用户在按下时跳回到顶部如果未启用JavaScript,则不会破坏页面(除非您有JavaScript检测代码如果启用了JavaScript,则可以禁用默认事件除非你知道如何阻止浏览器选择某些文本,否则你必须使用href(不知道使用4是否会消除阻止浏览器选择文本的因素)

基本上没有人在这篇文章中提到5,我认为这很重要,因为如果你的网站突然开始围绕链接进行选择,它会显得不专业。

其他回答

因此,当您使用<a/>标记执行某些JavaScript操作时,如果您也放入href=“#”,则可以在事件末尾添加return false(如果是内联事件绑定),如:

<a href="#" onclick="myJsFunc(); return false;">Run JavaScript Code</a>

或者您可以使用JavaScript更改href属性,如:

<a href="javascript://" onclick="myJsFunc();">Run JavaScript Code</a>

or

<a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>

但从语义上讲,上述所有实现这一点的方法都是错误的(尽管它很好)。如果没有创建任何元素来导航页面,并且有一些JavaScript内容与之相关,那么它不应该是<a>标记。

您可以根据需要简单地使用<button/>来做事情或任何其他元素,如b、span或任何适合的元素,因为您可以在所有元素上添加事件。


因此,使用<a href=“#”>有一个好处。在执行a href=“#”时,默认情况下会在该元素上获得光标指针。为此,我认为您可以使用CSS,比如cursor:pointer;这也解决了这个问题。

最后,如果您从JavaScript代码本身绑定事件,那么如果您使用的是<a>标记,则可以使用event.prpreventDefault()来实现这一点,但如果您没有使用<a>标签,则可以获得一个优势,您不需要这样做。

所以,如果你看到了,最好不要对这种东西使用标签。

当我有几个人造链接时,我更喜欢给它们一个“没有链接”的类。

然后在jQuery中,我添加了以下代码:

$(function(){
   $('.no-link').click(function(e){
       e.preventDefault();
   });
});

对于HTML,链接简单

<a href="/" class="no-link">Faux-Link</a>

我不喜欢使用哈希标签,除非它们用于锚点,并且只有当我有两个以上的虚假链接时,我才会使用上面的方法,否则我会使用javascript:void(0)。

<a href="javascript:void(0)" class="no-link">Faux-Link</a>

通常情况下,我喜欢完全避免使用链接,只在一个跨度中包装一些东西,并将其用作激活某些JavaScript代码的方式,如弹出窗口或内容显示。

最简单且最为大家所使用的是javascript:void(0)。您可以使用它来代替使用#来停止标记重定向到标题部分。

<a href="javascript:void(0)" onclick="testFunction();">Click To check Function</a>

function testFunction() {
    alert("hello world");
}

为了完全符合整体情绪,在需要时使用void(0),在需要的时候使用有效的URL。

使用URL重写,您可以禁用URL,这些URL不仅可以执行JavaScript所需的操作,还可以确切地告诉您它将要执行的操作。

<a href="./Readable/Text/URL/Pointing/To/Server-Side/Script" id="theLinkId">WhyClickHere</a>

在服务器端,您只需解析URL和查询字符串并执行所需的操作。如果您聪明,可以允许服务器端脚本以不同的方式响应Ajax和标准请求。允许您使用简洁的集中代码来处理页面上的所有链接。

URL重写教程

Pros

在状态栏中显示通过JavaScript中的onclick处理程序轻松升级到Ajax实际评论本身防止目录中充斥着一次性使用的HTML文件

Cons

在JavaScript中仍应使用event.prpreventDefault()服务器端的路径处理和URL解析相当复杂。

我相信还有很多罪犯。欢迎讨论。

也不

如果您可以有一个实际的URL,请将其用作HREF。如果有人中间点击你的链接打开一个新的标签,或者他们禁用了JavaScript,onclick就不会启动。

如果这是不可能的,那么您至少应该使用JavaScript和适当的单击事件处理程序将锚标记注入到文档中。

我意识到这并不总是可能的,但在我看来,在开发任何公共网站时都应该努力做到这一点。

查看Unobrusive JavaScript和Progressive增强(两个维基百科)。