我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue怎么打开新窗口并实现传参的图文

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue怎么打开新窗口并实现传参的图文

这篇文章主要介绍“vue怎么打开新窗口并实现传参的图文”,在日常操作中,相信很多人在vue怎么打开新窗口并实现传参的图文问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么打开新窗口并实现传参的图文”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

我要实现的功能是打开一个新窗口用来展示新页面,而且需要传参数,并且参数不能显示在地址栏里面,而且当我刷新页面的时候,传过来的参数不能丢失,要一直存在,除非我手动关闭这个新窗口,即浏览器的标签页。

先把做好的代码写出来,后面再介绍别人实现不了的坑,以及这方面相关要注意的。

打开新窗口并传参代码

//打开新窗口并传参,参数不能显示在地址栏里面,不关闭窗口一直刷新,参数一直有效handleWindow() { //主要实现打开新窗口的功能 var route = this.$router.resolve({ name: 'Xterm', }) //主要实现存储参数的功能 sessionStorage.setItem("ip", "1.1.1.1");  window.open(route.href, '_blank')}

我的路由配置,也贴出来好了

{ path: '/xterm', hidden: true, component: () => import('@/views/monitor/xterm/index'), name: 'Xterm',},

现在是页面接收参数

//vue的初始化方法,页面一初始化,就去拿参数created() { alert(sessionStorage.getItem("ip")); this.ip = sessionStorage.getItem("ip")},

贴个真相图

vue怎么打开新窗口并实现传参的图文

这是通过vue的 打开新窗口,通过sessionStorage传参拿参数。为什么只能这么做,才能实现这个功能,下面我讲一下我的踩坑历程。群众里有坏人,拿个假代码来网络上骗人,哪个码农经不起这样的考验?

首先这个功能需要打开新窗口,那么方式有如下3种;

第一种:通过<router-link>标签,这种标签的写法我个人很不中意,对于简单的业务场景还勉强可以,但是我要处理一堆业务,很多个参数的,这种标签的写法很不利于业务拓展。直接排除,OUT!

第二种:通过router.replace方法,这种方法的打开窗口,是把当前A页面替换成要跳转过去的B页面,我打开新窗口是想看新东西,这倒好,直接让我之前的页面没了,这不操蛋嘛?在我实验过后,OUT!

第三种:通过router.resolve方法,这就是打开新窗口,不影响当前A页面,直接打开一个浏览器标签页,我可以通过来回切换标签页,来看两个页面的信息数据。这很nice,我中意,就是这个了。

顺带介绍一下,vue2.0以后,为了和日渐流行的HTML5保持一致,router.go和router.push就不支持新窗口打开的属性,router.go被用来当做前进后退了; router.push被用来当做导向特殊页面, 这个跳转,不会打开新窗口,有history功能,如果你一个窗口有多标签页的话,可以用这个来开多个,如图所示;

vue怎么打开新窗口并实现传参的图文

好了,使用router.resolve,我们可以跳转到新窗口里,那么现在就开始传参了,这就到了坑爹的地方了。按照网上的搬运来看,主要是如下两种传参;

//测试第一种传参testA (aaa) { const route = this.$router.resolve({   name: 'Xterm',    params: {     ip: aaa   } }) window.open(route.href,'_blank')}//测试第二种传参testA (bbb) { const route = this.$router.resolve({   path: '/xterm',    query: {     ip: bbb   } }) window.open(route.href,'_blank')}

对应的接收参数,如下所示;

created() { //测试第一种接参 this.ip = this.$route.params.ip //测试第二种接参 this.ip = this.$route.query.ip},

测试的结果是,第一种永远拿不到值,第二种地址栏里暴露了传递的各项参数值。即使第一种经过种种特殊处理,最好的结果也只是第一次拿到值,再刷新一下页面,值就丢失了,这怎么行?谁能保证用户不会觉得有点卡,然后顺手去点了刷新按钮。这种在router.push里面传参是一点问题都没有,都能接收到,区别就是name+params组合,参数不会在地址栏里面,刷新后数据会消失;path+query组合传参,参数会在地址栏里面,无论怎么刷新页面,值会一直在。估计是用push试了以后,理所当然的觉得resolve也一样,我看好多博客里写的不通过地址栏传参,使用第一种传参,然后压根成功不了,还点击量贼高,欲哭无泪啊。

没办法,只能自己动手了,找了找缓存啥的,发现localStorage 和 sessionStorage 属性,sessionStorage 用于临时保存数据,在关闭窗口或标签页之后将会删除这些数据;localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去删除。显而易见,sessionStorage 就可以了。

支持这俩属性的浏览器版本如下所示;

vue怎么打开新窗口并实现传参的图文

至此,其实问题就得到解决了,其实,也不复杂,就是网上答案良莠不齐,记录一下,以供他人使用。

总结

到此,关于“vue怎么打开新窗口并实现传参的图文”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue怎么打开新窗口并实现传参的图文

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue怎么打开新窗口并实现传参的图文

这篇文章主要介绍“vue怎么打开新窗口并实现传参的图文”,在日常操作中,相信很多人在vue怎么打开新窗口并实现传参的图文问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么打开新窗口并实现传参的图文”的疑
2023-06-06

vue带参数跳转打开新页面、新窗口怎么实现

今天小编给大家分享一下vue带参数跳转打开新页面、新窗口怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。vue带参数跳
2023-07-06

vue路由跳转打开新窗口和关闭窗口怎么实现

本篇内容主要讲解“vue路由跳转打开新窗口和关闭窗口怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue路由跳转打开新窗口和关闭窗口怎么实现”吧!vue路由跳转打开新窗口和关闭窗口需求:
2023-07-06

Vue在原窗口与新窗口打开外部链接的实现代码

这篇文章主要介绍了Vue如何在原窗口与新窗口打开外部链接,文中给大家提到了vue跳转外部链接的实现代码,本文给大家介绍的非常详细,需要的朋友可以参考下
2023-02-02

怎么用CSS实现在新窗口打开链接

这篇文章给大家分享的是有关怎么用CSS实现在新窗口打开链接的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。用CSS实现在新窗口打开链接a:active {test:expression(target=”_blank
2023-06-27

vue跳转页面打开新窗口并携带与接收参数方式是什么

本篇内容介绍了“vue跳转页面打开新窗口并携带与接收参数方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、携带普通类型参数字符串、
2023-06-29

nodejs文件实现打包成exe,并设置开机自启动的方法详解(没有黑窗口)

这篇文章主要介绍了nodejs文件实现打包成exe,并设置开机自启动的方法,结合实例形式分析了node.js使用pkg包实现生成exe可执行文件的相关操作技巧,需要的朋友可以参考下
2023-05-19

laravel怎么实现上传图片的接口并建立软链接访问

这篇文章主要介绍“laravel怎么实现上传图片的接口并建立软链接访问”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“laravel怎么实现上传图片的接口并建立软链接访问”文章能帮助大家解决问题。我们
2023-07-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录