为什么很多前端要去掉链接,改用事件代替?

2020-08-28 09:26:38 +08:00
 siteshen
本来可以做成一个普通的链接,非要用 onclick 之类的东西来作跳转,导致链接原有的功能不可用。比如右键「复制链接」、比如鼠标中键「在新窗口打开」。

以下 HTML 片段摘自某些网站:

// 点击后,会在新窗口打开链接 xyz.png
<p class="option preview" data-screen_glue_cid="sgk8897jh2xhboe5">预览</p>


// 点击后跳转到 /tasks/{task-uuid}
<div class="task-content__inner__oIt- hinted" data-title="增加排序功能">增加排序功能</div>
3080 次点击
所在节点    前端开发
16 条回复
otakustay
2020-08-28 09:28:09 +08:00
就是偷懒,接 history api 还要用链接得加个 preventDefault
xiaojun1994
2020-08-28 09:29:35 +08:00
感觉省事。。a 标签还要覆盖样式
bsg1992
2020-08-28 09:30:28 +08:00
跳转前需要做一些逻辑上的效验或者操作啊
kop1989
2020-08-28 09:32:04 +08:00
1 、跳转前有逻辑需要执行。
2 、有可能你理解的界面切换并不是跳转。
3 、需要加大页面切换时,你恶意获取到信息的难度。
Lax
2020-08-28 09:32:18 +08:00
因为是 SPA,大部分情况下看似跳转其实页面主体并没有刷新,全靠 JavaScript 来更新页面内容
yaphets666
2020-08-28 09:56:57 +08:00
你把这个事想的太简单了 在你看来只是跳转了一个页面 没准背后执行了很多代码
jackchao7432
2020-08-28 09:58:21 +08:00
明不明白什么叫函数式编程?
whileFalse
2020-08-28 10:07:32 +08:00
通常因为懒,或者技术不佳,或者开发者根本不知道还有中键点击这种需求。
Google 十年前就实现了的技术,有什么难的。Google 搜索结果页面里面的链接,鼠标指过去都是原始链接,mousedown 的时候就给你加私货。

另有一种情有可原。你在 A 页面点击了按钮 B,页面变为 C 。但实际上并不存在 C 这个页面,也就是说没有一个能直达 C 的 URL,只能通过 A 页面点进去。这种情况肯定就不能提供 URL 形式的链接了。
ChanKc
2020-08-28 10:22:57 +08:00
我的理解
所有发生 URL 变化的都应该使用 a,并且支持中键点击
除此以外的,比如打开模态框对话框,可以用 button
做不到的都是 a11y 有缺陷
JasonSi
2020-08-28 12:57:49 +08:00
加个 role="link" 就可以优化不少体验,懒得做 a11y 呗… 还是不够关注交互
wangxiaoaer
2020-08-28 13:03:39 +08:00
那些说因为跳转前要执行代码或者 SPA 所以不用链接的,真是笑死我了。

链接跳转跟执行代码不冲突。
SPA 还有前端路由可用。
wangxiaoaer
2020-08-28 13:05:45 +08:00
个人能想到的原因:
1 懒
2 菜
3 反爬
ragnaroks
2020-08-28 13:47:39 +08:00
html 当模板用
loading
2020-08-28 14:10:48 +08:00
故意的,像现在新浪,手机版本,长按标题根本不能新窗打开,点进去后返回,全部新闻都刷了个新的,简直智障。
Sapp
2020-08-28 15:12:22 +08:00
因为简单,比如你没发现现在很多前端都不在 url 里携带内容了吗? 复制一下重新打开,信息全丢完了,就是因为这样是最简单的
dagouziwangwang
2020-08-28 15:29:20 +08:00
1. 懒 a 标签的样式需要改
2. 路由跳转会有参数需要处理
3. 还会有埋点的事件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/702088

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX