// 用于解析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()
}
}
}