URL相关操作

关于更多公共类的操作方法,可以关注下小滑轮网站

  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;
    }
    
  10. http协议转换为https
  11. @param url
  12. @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)

    })
    }


philips
719 声望177 粉丝

前端程序员