以下是构建链接的两种方法,该链接的唯一目的是运行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的情况下使用一个真正的链接。只需确保返回false,以防止在JavaScript执行时触发单击事件。
<a href="#" onclick="myJsFunc(); return false;">Link</a>
如果您使用Angular2,则此方法有效:
<a[routerLink]=“”(单击)=“passTheSalt()”>单击我</a>。
请参见此处https://stackoverflow.com/a/45465728/2803344
其他回答
我建议改用<button>元素,特别是当控件应该在数据中产生更改时。(类似于POST。)
如果不引人注目地注入元素,这是一种渐进式增强,效果会更好。(请参阅此评论。)
通常,您应该始终有一个回退链接,以确保禁用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的用户则可以查看增强的功能。
您可以使用href并删除所有只有哈希值的链接:
HTML格式:
<a href="#" onclick="run_foo()"> foo </a>
JS:
$(document).ready(function(){ // on DOM ready or some other event
$('a[href=#]').attr('href',''); // set all reference handles to blank strings
// for anchors that have only hashes
});
如果你问我,也不会;
如果您的“链接”仅用于运行某些JavaScript代码,则它不符合链接的资格;我建议使用带有onclick处理程序的<span>标记和一些基本CSS来模拟链接。链接是用于导航的,如果您的JavaScript代码不是用于导航,那么它不应该是一个<a>标记。
例子:
函数callFunction(){console.log(“函数调用”);}.js操作{光标:指针;颜色:#00f;文本装饰:下划线;}<p>我想在这里调用JavaScript函数</p>
为了完全符合整体情绪,在需要时使用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解析相当复杂。
我相信还有很多罪犯。欢迎讨论。