获取URL中 hash#号前后的参数

615 阅读1分钟

#这个getUrlParamByName函数接受一个参数名称,然后解析当前URL中的查询参数。无论参数在#号前还是后,都可以正确获取参数值。如果找到了指定的参数,返回其值,否则返回undefined

function getUrlParamByName(name) {
    const url = window.location.href;
    const hashIndex = url.indexOf('#');
    let queryStringBeforeHash, queryStringAfterHash;

    if (hashIndex !== -1) {
        queryStringBeforeHash = url.substring(0, hashIndex).split('?')[1];
        queryStringAfterHash = url.substring(hashIndex + 1).split('?')[1];
    } else {
        queryStringBeforeHash = url.split('?')[1];
    }

    const queryStrings = [queryStringBeforeHash, queryStringAfterHash];
    let result;

    queryStrings.forEach(queryString => {
        if (queryString) {
            queryString.split('&').forEach(param => {
                const [key, value] = param.split('=');
                if (key === name) {
                    result = decodeURIComponent(value);
                }
            });
        }
    });

    return result;
}

const paramName = 'yourParamName';
const paramValue = getUrlParamByName(paramName);
console.log(paramValue);