zoukankan      html  css  js  c++  java
  • JS 指定 url 或 当前 url 的字符串处理

    指定 url 或 当前 url 的基本处理

    不校验网址合法性,默认你传过来的都是正常的网址

    通用代码

    srcutilurlUtil.js

    /**
     * 获取当前url或者指定url 中的 params 对象
     * @param {String} wholeUrl 完整的 url
     */
    export function getQueryParamsObj(wholeUrl) {
        let params = null;
        let url = wholeUrl ? wholeUrl : window.location.href;
        let queryParams = url.split("?");
        queryParams = Array.isArray(queryParams) && queryParams[1] ? queryParams[1] : "";
    
        params = {};
        var vars = queryParams.split("&");
        for (let i = 0; i < vars.length; i++) {
            let pair = vars[i].split("=");
            params[pair[0]] = pair[1];
        }
    
        return params;
    }
    
    /**
     * 获取指定url或者当前url不携带参数的地址
     * @param {String} wholeUrl 完整的 url 字符串
     */
    export function getUrlNoQueryParams(wholeUrl) {
        var url = wholeUrl ? wholeUrl : window.location.href
        if (url.indexOf('?') > 0) {
            var baseUrl = url.substring(0, url.indexOf('?'))
            return baseUrl
        }
        return url
    }
    
    
    /**
     * 获取指定url或者当前url中的某个查询参数,没值返回 false(该参数的值可能也正好是 false,需自行注意)
     * @param {String} paramName 需要获取到的 param 名字
     * @param {String} wholeUrl 完整的 url 字符串
     */
    export function getQueryParamValue(paramName, wholeUrl) {
        var url = wholeUrl ? wholeUrl : window.location.href
        var queryStr = url.substring(url.indexOf('?') + 1);
        var params = queryStr.split("&");
        for (var i = 0; i < params.length; i++) {
            var pair = params[i].split("=");
            if (pair[0] == paramName) { return pair[1]; }
        }
        return (false);
    }
    
    
    /**
     * 删除当前url或指定url的指定 params 参数,并返回新的 url
     * @param {String} paramName 需要删除的 param 名
     * @param {String} wholeUrl 需要修改的 url 地址
     */
    export function deleteQueryParamValue(paramName, wholeUrl) {
        var url = wholeUrl ? wholeUrl : window.location.href
        var paramStr = url.substring(url.indexOf('?') + 1)
        var baseUrl = url.substr(0, url.indexOf("?"))
        var paramsUrl = ""
    
        var arr = new Array()
        if (paramStr != "") {
            var params = paramStr.split("&")
            for (var i = 0; i < params.length; i++) {
                var pair = params[i].split("=")
                if (pair[0] != paramName) {
                    arr.push(params[i])
                }
            }
        }
        if (arr.length > 0) {
            paramsUrl = "?" + arr.join("&")
        }
        url = baseUrl + paramsUrl
        return url
    }
    

    使用案例

    ① 引入js文件

    ② 调用方法

    import { getQueryParamsObj, getUrlNoQueryParams, getQueryParamValue, deleteQueryParamValue } from '../../util/urlUtil'
    
    
    // ----- getQueryParamsObj ---------
    getQueryParamsObj()  // 当前页面 url => https://www.baidu.com/s?ie=UTF-8&wd=localstorage
    // {ie: "UTF-8", wd: "localstorage"}
    
    getQueryParamsObj('https://www.baidu.com/s?ie0=UTF-8&wd=localstorage&a=1')
    // {ie0: "UTF-8", wd: "localstorage", a: "1"}
    
    
    
    // ----- getUrlNoQueryParams ---------
    getUrlNoQueryParams()  // 当前页面 url => https://www.baidu.com/s?ie=UTF-8&wd=localstorage
    // "https://www.baidu.com/s"
    
    getUrlNoQueryParams('https://www.baidu.com/s?ie0=UTF-8&wd=localstorage&a=1')
    // "https://www.baidu.com/s"
    
    
    
    //  ----- getQueryParamValue ---------
    getQueryParamValue('wd')  // 当前页面 url => https://www.baidu.com/s?ie=UTF-8&wd=localstorage
    // "localstorage"
    
    getQueryParamValue('wd', 'https://www.baidu.com/s?ie0=UTF-8&wd=ssesionstorage&a=1')
    // "ssesionstorage"
    
    
    
    //  ----- deleteQueryParamValue ---------
    deleteQueryParamValue('wd')  // 当前页面 url => https://www.baidu.com/s?ie=UTF-8&wd=localstorage
    // "https://www.baidu.com/s?ie=UTF-8"
    
    deleteQueryParamValue('wd', 'https://www.baidu.com/s?ie0=UTF-8&wd=ssesionstorage&a=1')
    // "https://www.baidu.com/s?ie0=UTF-8&a=1"
    
    
  • 相关阅读:
    kafka 项目实战
    7.DHCP的相关命令
    3.centos 7执行service iptables save报错问题
    39.NFS(网络文件系统)
    37.Samba 文件共享服务1--配置共享资源
    36.Samba 文件共享服务1--安装及配置参数解释
    35.简单文件传输协议
    34.vsftpd服务程序--虚拟用户模式
    33.vsftpd服务程序--本地用户模式
    32.vsftpd服务程序--匿名开放模式
  • 原文地址:https://www.cnblogs.com/suwanbin/p/13583709.html
Copyright © 2011-2022 走看看