import { tsString } from './string' /** * URL处理模块 */ export module tsUrl { /** * 获取域名传参,!!!警告:参数名不能带=号,仅支持参数值带=号 * @param url 带参数的url,默认值:window.location * @returns */ export function getQuery(url?: string): Map { if (!tsString.isNullOrEmpty(url)) { if (String(url).indexOf('?') != -1) { url = url.split('?')[1] } } else if (tsString.isNullOrEmpty(url) && window) { url = window.location.search.substring(1) } let m: Map = new Map() if (tsString.isNullOrEmpty(url)) { return m } let query = decodeURI(url) if (query.length > 0) { let vars = query.split('&') for (let val of vars) { let index = val.indexOf('=') if (index == -1) { continue } let k = val.substring(0, index) let v = val.substring(index + 1, val.length) m[k] = v } } return m } /** * 获取指定参数值 * @param key 参数名 * @param defaultVal 默认值 * @param url 带参数的url,默认值:window.location * @returns */ export function getQueryValue(key: string, defaultVal?: any, url?: string): any { let m = getQuery(url) return m[key] || defaultVal } /** * 从url中提取域名 * @param url 支持:http, https, wss, ws, * @returns */ export function getDomain(url: string): string { if (tsString.isNullOrEmpty(url)) { return '' } let domain = url.replace('https://', '') domain = domain.replace('http://', '') domain = domain.replace('wss://', '') domain = domain.replace('ws://', '') let index = domain.indexOf('/') if (index != -1) { domain = domain.substring(0, index) } return domain } /** * 转换url wss->https, ws->http * @param url * @returns */ export function convertWSToHttp(url: string): string { let httpUrl = url.replace('wss://', 'https://') httpUrl = httpUrl.replace('ws://', 'http://') return httpUrl } }