vue打开其他项目页面并传入数据详解


Posted in Vue.js onNovember 25, 2020

1.不跨域,携带sessionstorage打开

主页面,存储sessionstorage后,打开页面

let data = {
	text:'我是数据'
};
let isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)?true:false;

sessionStorage.setItem('information',JSON.stringify(data));
//ios不能打开新窗口,所以改为移动端在原本页面打开,pc打开新窗口
window.open(window.location.protocol + "//" + window.location.host + reportUrl, isMobile?'_self':'_blank');

子页面

var date = JSON.parse(sessionStorage.getItem('information'));

2.跨域,iframe通信

跨域的情况下,无法携带sessionstorage,通过iframe的postMessage通信机制传递数据;

不跨域也可以用,但更建议使用第一种,比较丝滑~

主页面,写入url,加载完成后,发送数据

<iframe id='iframe' class="iframe" v-if="src" ref="iframe" :src="src"></iframe>

let data = {
	text:'我是数据'
};
this.src = url
this.$nextTick(()=>{
	document.getElementById('iframe').onload=()=>{
		document.getElementById('iframe').contentWindow.postMessage({
			type:'preview',
			data:data
		},this.src)
		document.getElementById('iframe').onload=null;
 }
})

子页面,执行监听,created、mounted都可以

created() {
	window.addEventListener('message',(event)=>{
	 console.log(event.data.type)
	 if(event.data&&event.data.type=='preview'){
	  console.log(event.data.data)
	  let data = event.data.data
	 }
	 }, false);
}

总结

到此这篇关于vue打开其他项目页面并传入数据的文章就介绍到这了,更多相关vue打开项目页面并传数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 Vue.js
Vue用mixin合并重复代码的实现
Nov 27 Vue.js
vue中defineProperty和Proxy的区别详解
Nov 30 Vue.js
Vue——前端生成二维码的示例
Dec 19 Vue.js
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
Vue仿百度搜索功能
Dec 28 Vue.js
vue 中this.$set 动态绑定数据的案例讲解
Jan 29 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
vue实现拖拽交换位置
Apr 07 Vue.js
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
Vue开发中常见的套路和技巧总结
Nov 24 #Vue.js
浅析VUE防抖与节流
Nov 24 #Vue.js
解决vue页面刷新,数据丢失的问题
Nov 24 #Vue.js
Vue 的 v-model用法实例
Nov 23 #Vue.js
VUE+Element实现增删改查的示例源码
Nov 23 #Vue.js
Vue实现购物小球抛物线的方法实例
Nov 22 #Vue.js
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 #Vue.js
You might like
实用函数7
2007/11/08 PHP
PHP中soap的用法实例
2014/10/24 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
Python判断直线和矩形是否相交的方法
2015/07/14 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
numpy自动生成数组详解
2017/12/15 Python
Python iter()函数用法实例分析
2018/03/17 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
python函数的作用域及关键字详解
2019/08/20 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
Java程序员面试题
2013/07/15 面试题
篮球赛口号
2014/06/18 职场文书
手术室护士个人总结
2015/02/13 职场文书
2015年采购部工作总结
2015/04/23 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记