美文网首页
URL HASH操作

URL HASH操作

作者: imakan | 来源:发表于2020-05-21 18:55 被阅读0次
    /**
     * 比如:demo.com#test=1&test2=2
     * @param key
     * @return value
     */
    export function getUrlHash(key: string) {
        const matches = window.location.hash.match(new RegExp(key + '=([^&]*)'));
        if (matches && matches.length) {
            return decodeURIComponent(matches[1]);
        }
        return null;
    }
    /**
     * 设置url hash
     * 覆盖原有hash的值并保留原有的hash值
     * 比如:#test=1&test2=2
     * @param key
     * @param value
     */
    export function setUrlHash(key: string, value: string) {
        // 解析原有的hash值
        let rawHash = window.location.hash.substr(1);
        let resultHash: string[] = [];
        if (rawHash) {
            let hashArr = rawHash.split(/&/).reduce((pr, cr) => {
                return pr.concat([cr.split(/=/)]);
            }, [] as any[]);
            let hashMap = new Map(hashArr);
            hashMap.set(key, encodeURIComponent(value));
            // 还原为url hash结构
            for (let [k, v] of hashMap) {
                if (v) {
                    resultHash.push(k + '=' + v);
                } else {
                    resultHash.push(k + '');
                }
            }
        } else {
            resultHash.push(key + '=' + encodeURIComponent(value));
        }
        window.location.hash = resultHash.join('&').toString();
    }
    

    如有bug,请帮忙指出

    相关文章

      网友评论

          本文标题:URL HASH操作

          本文链接:https://www.haomeiwen.com/subject/divtahtx.html