獲取url中的參數, 刪除url中參數, 增長url中的參數

URL相關操做

關於更多公共類的操做方法,能夠關注下小滑輪網站 http://www.feiaci.com/#/self/...dom

  1. 獲取window.URL 實例
  2. 獲取url中的參數
  3. 刪除url中參數
  4. 增長url中的參數
  5. 獲取URL裏domain
  6. 返回url的pathName
  7. http協議轉換爲https
  8. 將dataURL轉換爲blob
  9. 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)
    })
}
相關文章
相關標籤/搜索