URL相关操作
关于更多公共类的操作方法,可以关注下小滑轮网站
- 获取window.URL 实例
- 获取url中的参数
- 删除url中参数
- 增加url中的参数
- 获取URL里domain
- 返回url的pathName
- http协议转换为https
- 将dataURL转换为blob
- blob2DataURL
/**
* 给定 url, 返回一个 window.URL 实例
* @param url
* @returns {*|URL}
*/
function parseUrl(url) {
if (url.startsWith('//')) {
url = location.protocol + url;
}
return new window.URL(url);
}
/**
* 获取url中的参数
* @param name 为参数名
* @param url 为获取参数的URL
*/
function getUrlParam(name, url = window.location.href) {
return parseUrl(url).searchParams.get(name);
}
/**
* 删除url中参数
* @param name 为参数名
* @returns {String}
*/
function removeUrlParam(param, url = window.location.href) {
let obj = parseUrl(url);
obj.searchParams.delete(param);
return obj.href;
}
/**
* 增加url中的参数
* @param key
* @param value
* @param url
* @returns {String}
*/
function addUrlParam(key, value, url = window.location.href) {
let obj = parseUrl(url);
obj.searchParams.set(key, value);
return obj.href;
}
/**
* 获取URL里domain
* 举例: url = "http://jira.yqxiu.cn/browse/REFACT-17"
* 返回 "jira.yqxiu.cn"
*/
function getUrlHost(url = window.location.href) {
return parseUrl(url).host;
}
/**
* 返回url的pathName
* @param url
*/
function getPathName(url = window.location.href) {
var obj = parseUrl(url);
return obj.pathname;
}
/**
* http协议转换为https
* @param url
* @return {*}
*/
function url2https(url) {
return addProtocol(url).replace(/^http:/, 'https:');
}
/**
* 将dataURL转换为blob
* @param {*} dataURL
*/
function dataURL2Blob(dataURL) {
const arr = dataURL.split(',')
const type = arr[0].match(/:(.*?);/)[1]
const text = window.atob(arr[1]) // 将base64转换成文本
let n = text.length
const uint8Array = new Uint8Array(n)
while (n--) {
uint8Array[n] = text.charCodeAt(n)
}
return new Blob([uint8Array], { type })
}
/**
* 将blob转换为dataURL
* @param {*} blob
*/
function blob2DataURL(blob) {
return new Promise(resolve => {
const fileReader = new FileReader()
fileReader.onload = e => resolve(e.target.result)
fileReader.readAsDataURL(blob)
})
}