技术心得总结:a 标签实现新标签页打开功能

最近,有用户提出希望在点击菜单项时,能够在新标签页中打开对应的链接功能。这类似于我们常用的右键菜单中的“在新标签页打开链接”功能。经过对需求的分析和代码的查看,我们找到了实现这一功能的方法。

原始实现

image.png

最初的跳转实现是通过用户触发 click 事件,调用自定义的 handleItemClick 方法来处理点击事件,从而完成各个产品项目的跳转:

<div @click="() => handleItemClick(child)">
   {{ child.title }} <!-- 如容器、网关等 -->
</div>

这种实现方式能够在当前页面内完成跳转,并且 handleItemClick 中包含了一些特定的 history 逻辑,但无法同时满足用户希望在新标签页中打开链接的需求。

增加“新标签页”打开功能

image.png

为了实现这一需求,我们需要使用 a 标签,使其同时支持左键点击事件和右键在新标签页中打开的功能。a 标签具备 HTML 的原生功能,能够唤起浏览器右键菜单中的“在新标签页中打开链接”、“在新窗口中打开链接”、“在隐身窗口中打开链接”等选项。这样,我们不仅能满足用户的需求,还能提供更多的浏览器原生功能!

具体实现如下:

<a :href="child.path" @click.prevent="() => handleItemClick(child)">
    {{ child.title }} <!-- 如容器、网关等 -->
</a>

在这种实现中,左键点击仍然通过 @click.prevent 调用自定义逻辑 handleItemClick,但右键点击则利用 href 属性,让浏览器原生的右键菜单实现“在新标签页中打开”功能,而且这种方法能够在所有现代浏览器中很好地工作。

.prevent 是 vue 中的用法,我们也可以使用下面的方式实现:

handleItemClick(child, event) {
    // 左键点击时阻止默认行为
    event.preventDefault();
    // 进行页面跳转或其他操作
    // todo ...
}
结论

通过调整 a 标签的实现,我们不仅保持了现有跳转的处理,也成功的满足了用户希望在新标签页中打开产品链接的需求。这种方法简洁高效,充分利用了浏览器的原生功能,避免了复杂的 JavaScript 处理。

相关推荐

  1. VSCode,请打开文件始终在标签打开

    2024-06-17 11:12:02       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-17 11:12:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-17 11:12:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-17 11:12:02       82 阅读
  4. Python语言-面向对象

    2024-06-17 11:12:02       91 阅读

热门阅读

  1. 软件测试的内容以及维度

    2024-06-17 11:12:02       28 阅读
  2. PostgreSQL 数据库选择指南

    2024-06-17 11:12:02       27 阅读
  3. MySQL UPDATE查询的用法和注意事项

    2024-06-17 11:12:02       26 阅读
  4. 据包捕获和分析工具作原理和用途

    2024-06-17 11:12:02       32 阅读
  5. 猫狗识别(超详细版)(py代码)

    2024-06-17 11:12:02       29 阅读
  6. 实例方法与静态方法

    2024-06-17 11:12:02       34 阅读
  7. 存储技术介绍

    2024-06-17 11:12:02       34 阅读
  8. C# —— do_while循环

    2024-06-17 11:12:02       29 阅读
  9. Mock数据

    2024-06-17 11:12:02       23 阅读
  10. 旅行商问题要点和难点以及具体应用案例

    2024-06-17 11:12:02       27 阅读