在 Vue 中,要实现点击一个元素并触发函数跳转到另一个网站的功能,你可以直接在元素的点击事件处理程序中调用 window.location.href 来设置新的 URL。但如果你确实需要在点击事件中先执行一些逻辑(例如发送请求、修改状态等),然后再进行跳转,你可以将这些逻辑封装在一个函数中,并在该函数中执行跳转。

以下是一个简单的示例:

<template>  
  <div>  
    <button @click="navigateToExternalSite">跳转到外部网站</button>  
  </div>  
</template>  
  
<script>  
export default {  
  methods: {  
    navigateToExternalSite() {  
      // 这里可以添加一些前置逻辑,例如发送请求、修改状态等  
      // ...  
  
      // 跳转到外部网站  
      window.location.href = 'https://www.example.com';  
    }  
  }  
}  
</script>

在上面的示例中,当用户点击按钮时,navigateToExternalSite 方法会被调用。在这个方法中,你可以添加任何你需要在跳转之前执行的前置逻辑。然后,通过设置 window.location.href 的值来触发页面跳转。

请注意,由于这种方式是直接修改浏览器的 URL 并进行页面跳转,因此它不会受到 Vue 路由(如 vue-router)的影响。如果你正在使用 Vue 路由来管理你的应用内的页面导航,并且想要跳转到应用外部的 URL,那么你应该使用 window.location.href 而不是 Vue 路由。

跳转时打开一个新的页面

要在点击后打开一个新页面(即在新标签页或新窗口中打开),你可以使用 window.open() 方法,而不是 window.location.hrefwindow.open() 方法允许你指定要在哪个窗口或标签页中打开链接,以及是否打开新窗口或标签页。

下面是一个 Vue 方法示例,该方法在点击时会在新标签页中打开一个外部网站:

<template>  
  <div>  
    <button @click="openExternalSite">在新标签页中打开外部网站</button>  
  </div>  
</template>  
  
<script>  
export default {  
  methods: {  
    openExternalSite() {  
      // 打开新标签页或新窗口,并跳转到外部网站  
      window.open('https://www.example.com', '_blank');  
  
      // 如果你想要在新窗口中打开(而不是新标签页),通常浏览器会基于用户的设置来决定是否这样做  
      // 但有些浏览器可能总是打开新标签页,而不是新窗口  
    }  
  }  
}  
</script>

在上面的示例中,window.open() 方法接受两个参数:

  1. 第一个参数是你要打开的 URL。
  2. 第二个参数是一个可选的窗口特性字符串或窗口名称。在这个例子中,我们使用了 '_blank',它告诉浏览器在新标签页或新窗口中打开 URL。如果你提供一个窗口名称(例如 'myWindow'),并且该名称的窗口已经存在,那么 URL 将在那个窗口中打开,而不是创建新的窗口或标签页。

请注意,出于安全原因,一些浏览器可能会阻止或限制弹出窗口的行为,特别是当它们不是由用户交互(如点击事件)直接触发时。确保你的应用中的弹出窗口行为是用户期望的,并且不会给用户带来不必要的困扰。

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐