以下是构建链接的两种方法,该链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好。?
函数myJsFunc(){警报(“myJsFunc”);}<a href=“#”onclick=“myJsFunc();”>运行JavaScript代码</a>
or
函数myJsFunc(){警报(“myJsFunc”);}运行javascript代码</a>
以下是构建链接的两种方法,该链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好。?
函数myJsFunc(){警报(“myJsFunc”);}<a href=“#”onclick=“myJsFunc();”>运行JavaScript代码</a>
or
函数myJsFunc(){警报(“myJsFunc”);}运行javascript代码</a>
当前回答
通常,您应该始终有一个回退链接,以确保禁用JavaScript的客户端仍然具有某些功能。这个概念被称为不引人注目的JavaScript。
实例假设您有以下搜索链接:
<a href="search.php" id="searchLink">Search</a>
您始终可以执行以下操作:
var link = document.getElementById('searchLink');
link.onclick = function() {
try {
// Do Stuff Here
} finally {
return false;
}
};
这样,禁用JavaScript的用户将被引导到search.php,而使用JavaScript的用户则可以查看增强的功能。
其他回答
“#”将使用户返回页面顶部,因此我通常使用void(0)。
javascript:;其行为类似于javascript:void(0);
老实说,我两个都不建议。我会使用一个样式化的<button></button>来实现该行为。
按钮链接{显示:内联块;位置:相对;背景色:透明;光标:指针;边框:0;填充:0;颜色:#00f;文本装饰:下划线;字体:inherit;}<p>一个看起来像<button type=“button”class=“link”>链接</button>的按钮</p>
这样您就可以分配onclick。我还建议通过脚本绑定,而不是在元素标记上使用onclick属性。唯一的问题是旧IE中无法禁用的伪3d文本效果。
如果必须使用A元素,请使用javascript:void(0);由于已经提到的原因。
如果onclick事件失败,将始终进行拦截。不会发生错误的加载调用,或基于哈希更改触发其他事件如果单击失败(onclick throws),哈希标记可能会导致意外行为,除非这是一个适当的失败行为,并且您希望更改导航历史记录,否则请避免它。
注意:您可以将0替换为javascript:void('删除记录123')之类的字符串,它可以作为一个额外的指示符,显示单击的实际操作。
这里还有一件更重要的事情要记住。第508节合规性。因此,我觉得有必要指出,您需要为JAWS等屏幕阅读器提供锚标记,以便能够通过选项卡将其聚焦。因此,解决方案“只使用JavaScript,忘记开头的锚”并不是其中的一个选项。只有当您无法让屏幕跳回到顶部时,才需要在href中启动JavaScript。您可以使用0秒的设置超时,让JavaScript在需要关注的地方启动,但即使是页面也会跳到顶部然后返回。
第一个,最好是在用户禁用JavaScript的情况下使用一个真正的链接。只需确保返回false,以防止在JavaScript执行时触发单击事件。
<a href="#" onclick="myJsFunc(); return false;">Link</a>
如果您使用Angular2,则此方法有效:
<a[routerLink]=“”(单击)=“passTheSalt()”>单击我</a>。
请参见此处https://stackoverflow.com/a/45465728/2803344
根据您想要完成的任务,您可以忘记onclick,只需使用href:
<a href="javascript:myJsFunc()">Link Text</a>
它避免了返回false的需要。我不喜欢#选项,因为如上所述,它会将用户带到页面顶部。如果你有其他地方可以发送用户,如果他们没有启用JavaScript(这在我工作的地方很少见,但这是一个非常好的主意),那么Steve提出的方法非常有效。
<a href="javascriptlessDestination.html" onclick="myJSFunc(); return false;">Link text</a>
最后,如果您不想任何人去任何地方,也不想调用javascript函数,那么可以使用javascript:void(0)。如果您有一个想要发生鼠标悬停事件的图像,但没有任何内容可供用户单击,那么它会非常有用。