// 用于解析vue项目中的 url 的 query 数据 // 如是 hash 模式,取 location.hash,如 #/xxx?a=1&b=2 // 如是 history 模式,取 location.search function parseQuery () { const str = location.search || location.hash || '' const [hash, query] = str.split('?') const result = { hash, query: {} } if (query) { const strs = query.split('&') for (let i = 0; i < strs.length; i++) { const [key, value] = strs[i].split('=') result.query[key] = value } } return result }
使用的时候
function checkLogin () { if (!sessionStorage.loginToken) { const { hash, query } = parseQuery() if (query.token) { window.sessionStorage.loginToken = query.token window.sessionStorage.loginUserId = query.userId window.sessionStorage.loginTicket = query.ticket let routePath = '' const pushQuery = removeAuthInfoFromQuery(query) if (hash) { // hash 模式 routePath = hash.slice(hash.indexOf('#') + 1) } else { // history 模式 routePath = location.pathname } router.replace({ path: routePath, query: pushQuery }) } else { getToken() } } }