【前端】实现Vue组件页面跳转的多种方式
发布日期:2021-05-14 01:21:28 浏览次数:27 分类:原创文章

本文共 3253 字,大约阅读时间需要 10 分钟。



目录
















前言


通过某个Button让页面多种方式跳转


在这里插入图片描述


1. 内嵌


想要在Vue应用中内嵌一个外部网页,可以使用<iframe>标签


下面是一个示例:


<template>  <div>    <!-- 在这里嵌入外部网页 -->    <iframe src="https://www.example.com" width="100%" height="500px" frameborder="0"></iframe>  </div></template><script>export default {
name: 'EmbeddedWebPage',}
</script><style scoped>/* 在这里添加样式 */</style>

<iframe>标签的src属性设置为要嵌入的外部网页的URL



  • 可以调整widthheight属性来设置iframe的大小


  • frameborder属性用于设置是否显示边框,设置为"0"表示不显示边框



2. 跳转新页面


以下几个Demo方式都不大一样,可以细细品尝


另外如果链接无法跳转到外部链接,通常有以下几个原因:



  • 安全策略限制:浏览器的安全策略可能阻止了在某些情况下跳转到外部链接,尤其是在一些网页中加载了外部脚本或者使用了一些特定的安全设置时


  • Vue Router 拦截:如果 Vue 项目使用了 Vue Router,并且点击的链接是一个标准的超链接(<a> 标签),Vue Router 会尝试拦截这个跳转,并尝试在单页面应用中进行路由跳转
    为了避免这种情况,可以将链接设置为外部链接,并使用 target="_blank" 属性来在新窗口中打开链接,这样就不会被 Vue Router 拦截


  • 路由模式设置:如果在 Vue Router 中使用了 history 模式,并且服务器端没有正确配置,可能会导致在浏览器地址栏输入外部链接时出现404错误
    在这种情况下,需要确保服务器端已经正确配置了路由,以确保在直接访问外部链接时能够正确跳转


  • 浏览器插件或扩展:某些浏览器插件或扩展可能会干扰页面的跳转行为
    可以尝试在不同的浏览器或者在无插件的情况下测试链接是否正常跳转



检查这些问题可能会找到问题所在


2.1 Demo1


跳转到新的页面:


<template>  <div>    <!-- 使用 <a> 标签跳转到外部链接 -->    <a href="http://example.com" target="_blank">跳转到外部链接</a>  </div></template><script>export default {
name: 'RedirectPage',}
</script><style scoped>/* 在这里添加样式 */</style>


  • <a> 标签的 href 属性指定了外部链接的地址,比如 http://example.com


  • target="_blank" 属性告诉浏览器在新的标签页或者窗口打开链接



这样当用户点击链接时,浏览器会打开一个新的标签页或者窗口,并跳转到指定的外部链接


不过这种方式需要双击最后才能继续跳转,有些鸡肋,有没有一步到位呢,也是有的!!


2.2 Demo2


想要实现直接跳转到外部链接,而不需要用户点击链接的操作


可以在 Vue 组件的 mounted 生命周期钩子函数中使用 JavaScript 来实现跳转


<template>  <div>    <!-- 在页面加载时立即跳转到外部链接 -->  </div></template><script>export default {
name: 'RedirectPage', mounted() {
// 在组件挂载后立即跳转到外部链接 window.location.href = "http://example.com"; }}
</script><style scoped>/* 在这里添加样式 */</style>

当 Vue 组件被挂载到页面上后,mounted 生命周期钩子函数会被调用


在这个钩子函数中,使用 window.location.href 将页面立即跳转到指定的外部链接,比如 http://example.com。


这样,当用户访问这个 Vue 组件所在的页面时,页面会立即跳转到指定的外部链接,而不需要用户进行任何点击操作


2.3 Demo3


如果希望用户返回上一个链接时停止跳转,可以使用 JavaScript 的 history 对象来管理浏览器的历史记录,并在组件销毁时清除添加的跳转


<template>  <div>    <!-- 页面内容 -->  </div></template><script>export default {
name: 'RedirectPage', mounted() {
// 在组件挂载后立即跳转到外部链接 this.redirectToExternalPage(); }, methods: {
redirectToExternalPage() {
// 跳转到外部链接 this.redirectHandler = setTimeout(() => {
window.location.href = "http://example.com"; }, 1000); // 1秒后跳转,可根据需求调整 } }, beforeDestroy() {
// 组件销毁时清除跳转操作 if (this.redirectHandler) {
clearTimeout(this.redirectHandler); } }}
</script><style scoped>/* 在这里添加样式 */</style>

使用了 setTimeout 函数来延迟跳转到外部链接,以便用户有时间返回上一个链接


可以根据需要调整延迟时间,特别是在组件销毁时,使用 beforeDestroy 生命周期钩子函数来清除跳转操作,以防止在用户返回上一个链接时继续跳转


3. 拓展


页面不跳转,甚至出现如下报错:app.js:978 Error: Cannot find module './views/equipment/inner/tech-data/index.vue'


可能是因为文件路径配置不正确或者文件确实不存在导致的


可以按照以下步骤检查和解决问题:



  1. 确认文件路径: 确保在你的项目目录中存在./views/equipment/inner/tech-data/index.vue文件。可以手动在文件系统中查找确认。


  2. 检查文件名和路径: 确保在路由配置中使用的文件路径与实际文件路径一致。即确保在PageRouter或ViewsRouter中的路由配置中,component属性的值指向了正确的文件路径。


  3. 检查文件导入: 如果文件确实存在,那么可能是文件导入的问题
    在确保文件路径正确的前提下,检查在PageRouter或ViewsRouter中导入组件的语句是否正确。确保导入路径和实际文件路径一致。


  4. 文件名大小写: 确保文件名的大小写与实际文件名匹配。在某些操作系统中,文件名的大小写是敏感的,因此确保在路由配置中使用的文件名与实际文件名大小写一致。


  5. 重新安装依赖: 如果以上步骤都没能解决问题,尝试重新安装项目的依赖
    可以通过删除node_modules文件夹并重新运行npm install来实现


  6. 检查编译过程: 如果使用了构建工具如Webpack等,确保构建过程中能够正确地解析和打包Vue组件


上一篇:a标签常用属性——你是否都用过?
下一篇:【前端】设计更好的数据表

发表评论

最新留言

很好
[***.229.124.182]2025年05月02日 13时39分22秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Linux学习--第九天--du、df、fsck、dumpe2fs、mount、NTFS-3G、fdisk、partprobe、/etc/fstab、free、mkswap、swapon 2023-02-03
Linux学习--第二天--分区、格式化、系统安装、vmware、远程管理工具 2023-02-03
Linux学习--第五天--vim使用、rpm命令 2023-02-03
Linux学习--第八天--acl、SetUID、SetGID、chattr、lsattr、sudo 2023-02-03
Linux学习--第六天--软件包 2023-02-03
Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本 2023-02-03
Linux学习--第十三天--日志、系统运行级别、grub加密 2023-02-03
Linux学习--第十天--bash脚本、用户自定义变量、环境变量、位置参数变量、预定义变量、标准输入输出、wc、history、dd、PS1 2023-02-03
Linux学习—部署yum网络仓库 2023-02-03
Linux学习之CentOS(十一)--CentOS6.4下Samba服务器的安装与配置 2023-02-03
Linux学习之CentOS(十八)--与Linux文件和目录管理相关的一些重要命令② 2023-02-03
Linux学习之sed命令详解 2023-02-03
linux学习之vi文件编辑命令 2023-02-03
linux学习命令总结⑩② 2023-02-03
Linux学习总结 2023-02-03
Linux学习总结(10)——Linux查看CPU和内存使用情况 2023-02-03
Linux学习总结(11)——Linux文件查找 2023-02-03
Linux学习总结(12)——Linux必须学会的60个命令 2023-02-03
Linux学习总结(13)——在阿里云的ubuntu上部署个人服务 2023-02-03
Linux学习总结(14)——Linux权限控制 2023-02-03