以下是构建链接的两种方法,该链接的唯一目的是运行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代码,则它不符合链接的资格;我建议使用带有onclick处理程序的<span>标记和一些基本CSS来模拟链接。链接是用于导航的,如果您的JavaScript代码不是用于导航,那么它不应该是一个<a>标记。
例子:
函数callFunction(){console.log(“函数调用”);}.js操作{光标:指针;颜色:#00f;文本装饰:下划线;}<p>我想在这里调用JavaScript函数</p>
其他回答
“#”将使用户返回页面顶部,因此我通常使用void(0)。
javascript:;其行为类似于javascript:void(0);
第一个,最好是在用户禁用JavaScript的情况下使用一个真正的链接。只需确保返回false,以防止在JavaScript执行时触发单击事件。
<a href="#" onclick="myJsFunc(); return false;">Link</a>
如果您使用Angular2,则此方法有效:
<a[routerLink]=“”(单击)=“passTheSalt()”>单击我</a>。
请参见此处https://stackoverflow.com/a/45465728/2803344
为了完全符合整体情绪,在需要时使用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解析相当复杂。
我相信还有很多罪犯。欢迎讨论。
这里还有一件更重要的事情要记住。第508节合规性。因此,我觉得有必要指出,您需要为JAWS等屏幕阅读器提供锚标记,以便能够通过选项卡将其聚焦。因此,解决方案“只使用JavaScript,忘记开头的锚”并不是其中的一个选项。只有当您无法让屏幕跳回到顶部时,才需要在href中启动JavaScript。您可以使用0秒的设置超时,让JavaScript在需要关注的地方启动,但即使是页面也会跳到顶部然后返回。
为了完整起见,这里还有一个选项,即使禁用了JavaScript,也可以阻止链接执行任何操作,而且很短:)
<a href="#void" onclick="myJsFunc()">Run JavaScript function</a>
如果该id不在页面上,则链接将不起作用。
一般来说,我同意Aaron Wagner的回答,JavaScript链接应该与JavaScript代码一起注入到文档中。