URL跳转空白页参数传递封装
这东西主要是为了vue和平时打开一个空白界面_blank时的参数传递,不涉及到浏览器存储(session,local等)
众所周知,请求传参无非就用的query和params,相对应就是get和post,在当前界面下进行跳转情况下,使用
this.$router.push({
path:'/xxx',
query: {
id:"xxxxxx"
}
})
//接收参数
this.$route.query.id
或者这样
this.$router.push({
path:'/xxx',
name:'xxx', //params传参 需要使用 name 否则取不到;对应路由配置的 name
params: {
id:"xxxxxx"
}
})
//接收参数
this.$route.params.id
使用params传参时 刷新页面参数消失
配置路由 在path加 /:id 对应需要传的参数名
//路由配置
path: '/userManager/:id',
注意 :传参是 router,接收参数是 route
上面是在同界面传参跳转,下面的是跳转到空白界面带参数方法
//打开新页面
var { href } = this.$router.resolve({
path: '/showDocPdf',
query: {
pdfUrl: item.id
}
});
window.open(href);
//新界面接收参数
created() {
var id = this.$route.query.pdfUrl;
}
上面是对vue的跳转方式进行总结,下面是对于原生js的跳转空白页传参跳转后获取传参的值
第一种就是,单独取值,要什么取什么
/**
* title: 获取URL参数
* name:key的名称
* 公司大佬的封装函数,借用学习一番
**/
function getUrlParam(name, url) {
url = url || window.location.href; // 不传默认拿当前的url
url = url.toString();
var newUrl, reg, result;
newUrl = url.substr(url.indexOf('?') + 1, url.length);
reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
result = newUrl.match(reg);
if (result !== null) {
result = decodeURIComponent(decodeURI(result[2])); //防止二次编码情况 //完全解码
return xss(result); //防止参数展示时xss攻击---方法就自己写了,本人也看不懂xss的拦截
}
return '';
};
然后有个替换URL的参数方法,没有就添加进去,这个功能个人觉得很鸡肋,没啥作用
/**
* title: 替换url参数,没有则添加
* key:key名称
* value:替换的值
* url:替换的url,默认本窗口url
**/
function changeURL(key, value, url) {
url = url || window.location.href;
var par = key + "=" + value;
if (url.indexOf("?" + key + "=") == -1 && url.indexOf("&" + key + "=") == -1) {
var flag = url.indexOf("?") >= 0 ? "&" : "?";
url = url + flag + par;
} else {
url = url.replace(eval('/(' + key + '=)([^&]*)/g'), par);
}
return url;
};
上面是对一个值单独获取,下面是一次性拿取url的所有传值
/**
* title: url参数转成json对象
* url:默认本窗口url
**/
function paramToJson(url) {
url = url || window.location.href; // 获取当前浏览器的URL
var param = {};
url.replace(/([^?&]+)=([^?&]+)/g, function (s, v, k) {
param[v] = decodeURIComponent(k); //解析字符为中文
return k + '=' + v;
});
return param;
}
对于这个decodeURIComponent函数可能自己一直都用不到吧orz,JS解码的函数
然后又看到了大佬封装的新打开窗口可以设置窗口参数的方法,类似弹窗广告那种吧,缺点也写的很清楚,会给拦截(大概是给当成广告了)
/**
* title: 弹出新窗口中打开链接(会被拦截,不推荐使用)
* url:打开路径
* winName:窗口名称
* parameters:窗口参数,没有则默认全屏(有width=*,height=*宽高则默认居中)
**/
that.openWin = function (url, winName, parameters) {
winName = winName || '_blank';
parameters = parameters || '';
if (url.length == '0') {
return;
}
var winW, winH, top, left, param = 'toolbar=no, menubar=no, scrollbars=yes, resizable=no, location=no, status=no,';
winW = that.getUrlParam('width', '?' + parameters.replace(',', '&'));
winH = that.getUrlParam('height', '?' + parameters.replace(',', '&'));
if (winW && winH) {
//获得窗口的垂直位置
top = (window.screen.availHeight - 50 - Number(winH.replace('px', ''))) / 2;
//获得窗口的水平位置
left = (window.screen.availWidth - 20 - Number(winW.replace('px', ''))) / 2;
param += 'left=' + left + ',top=' + top + ',';
}
if (parameters) {
param += parameters;
} else {
param = 'width=' + (window.screen.availWidth - 20) + ',height=' + (window.screen.availHeight - 50) + ',top=0,left=0,' + param;
}
if (/.*[\u4e00-\u9fa5]+.*$/.test(url)) {
url = encodeURI(encodeURI(url)); //含有中文则编码
}
window.open(url, winName, param);
};
暂时就写道这吧,后面还有挺多url函数的封装方法,有时间再来补充了
URL跳转空白页参数传递封装的更多相关文章
- DZNEmptyDataSet,优秀的空白页或者出错页封装
简介 项目主页:https://github.com/dzenbot/DZNEmptyDataSet 提示:主要用于UITableView和UICollectionView,也可以用于UIScroll ...
- window.location.href跳转至空白页
现象:window.location.href = "XXX"调到了空白页,但是将XXX在窗口地址栏输入就会可以访问到. 原因:就是XXX前缀没有加上"http://&q ...
- React-Native 之 GD (十一)加载更多功能完善 及 跳转详情页
1.加载更多功能完善 GDHome.js /** * 首页 */ import React, { Component } from 'react'; import { StyleSheet, Text ...
- AngularJS进阶(八)实现页面跳转并进行参数传递
angularjs实现页面跳转并进行参数传递 注:请点击此处进行充电! Angular页面传参有多种办法,我在此列举4种最常见的: 1. 基于ui-router的页面跳转传参 (1) 在Angular ...
- mui scrollTo到指定位置,出现空白页及拉不动的问题解决
使用方式简介 mui 列表页使用的是 mui的插件实现的上拉加载下拉刷新,但是从详情页回到列表页时 不能回到之前的位置.所以想到了使用缓存. 第一次和第二次的试验是失败的.失败后,就想用其他办法来解决 ...
- android端,webview内url跳转到app本地
这是和一个前端同事沟通. app内嵌入他的web页,要通过web页内的url跳转到app的详细内容. 他的android同事,没有思路. 其实嵌入web页,用的webview控件,只要能找到webvi ...
- tp5页面输出时,搜索后跳转下一页的处理
tp5页面输出时,搜索功能在跳转下一页时,如果不做任何处理,会返回原有是第二页输出的数据.为了保证跳转下一页时输出的是搜索到的数据,做以下处理. (要根据自己的搜索字段进行适当修改) 页面js代码,给 ...
- idea jsp html 空白页的问题
摘要 最近没事儿瞎折腾java web,在idea中,突然发现无法显示页面了. 问题 为什么会出现这个问题? 接触了过滤器的内容,然后在项目中添加了这样的一个过滤器,用来对post过来的数据进行ut8 ...
- 安全测试4_客户端的安全漏洞(XSS、CSRF、点击劫持、URL跳转)
那个fanh前面学习的都是基础,现在开始正式学习下安全的知识,这一章主要讲解客户端常见的安全漏洞. 看到这个不错,给大家记一下: 1.常见的安全事件: 2.XSS(跨站脚本),英文全称:Cross S ...
随机推荐
- [源码解析] PyTorch 分布式之弹性训练(6)---监控/容错
[源码解析] PyTorch 分布式之弹性训练(6)---监控/容错 目录 [源码解析] PyTorch 分布式之弹性训练(6)---监控/容错 0x00 摘要 0x01 总体逻辑 1.1 Node集 ...
- One Pixel Attack for Fooling Deep Neural Networks
目录 概 主要内容 问题描述 Differential Evolution (DE) 实验 Su J, Vargas D V, Sakurai K, et al. One Pixel Attack f ...
- CS5218替代AG6310方案|设计DP转HDMI转换方案|替代AG6310方案
AG6310是一款实现显示端DP口转HDMI数据转换器.AG6310是一款单芯片解决方案,通过DP端口连接器传输视频和音频流,其DP1.2支持可配置的1.2和4通道,分别为1.62Gbps.2.7Gb ...
- CS5211替代CH7511B|DP转LVDS控制板|替代CH7511B设计电路方案
CS5211性能和参数可以替代CH7511B,PS8622,PS8625,LT7211等方案,用于设计DP转LVDS转换器,DP转LVDS控制板,DP转LVDS转接板等产品设计. CS5211是一个e ...
- Windows10中同时安装MySQL5和MySQL8
Windows10中同时安装MySQL5和MySQL8 同时安装的话,在执行mysql install要注意加名字,比如:mysqld --install MYSQL5 MySQL-5.5.54 ZI ...
- Ubuntu16.04下,erlang安装和rabbitmq安装步骤
文章来源: Ubuntu16.04下,erlang安装和rabbitmq安装步骤 准备工作,先下载erlang和rabbitmq的安装包,注意他们的版本,版本不对可能会导致rabbitmq无法启动,这 ...
- C#中的显式转换
大多数编程语言都支持显示转换,也称为强制转换,它与隐式转换相呼应,比如,一般的,整型可以通过隐式转换成浮点型,而浮点型需要通过强制转换成整型: int i = 32; double d = i;//整 ...
- 大厂必问的JVM面试题
本文目录: 讲一下JVM内存结构? 程序计数器 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 Java对象的定位方式 说一下堆栈的区别? 什么情况下会发生栈溢出? 类文件结构 什么是类加载 ...
- IntelliJ IDEA 2020.1.1 x64 Debug 断点调试模式详解
前言 对于初入职场的萌新们来说,很多都还不会 Debug 断点模式.记得我刚写代码的时候,也是通过 System.out.println() 一行一行的把变量打印出来看.其实强大的编辑器已经帮我们做好 ...
- win 10 遇到某文件一直在占用导致无法关闭,或者去任务管理器找不到服务怎么办?具体解决
1. 打开 cmd 指令框 ,输入 perfmon 回车 就会出来这个 点击 打开资源监视器, 在句柄搜索框搜索 那个占用资源的文件或软件关键词 ,如下 搜索酷狗 将有关的选项,右键选中后 打开菜单 ...