關於更多公共類的操做方法,能夠關注下小滑輪網站 http://www.feiaci.com/#/self/...dom
/** * 給定 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) }) }