21 lines
881 B
TypeScript
21 lines
881 B
TypeScript
|
|
type TargetContext = '_self' | '_parent' | '_blank' | '_top';
|
||
|
|
|
||
|
|
export const openWindow = (url: string, opts?: { target?: TargetContext; [key: string]: any }) => {
|
||
|
|
const { target = '_blank', ...others } = opts || {};
|
||
|
|
window.open(
|
||
|
|
url,
|
||
|
|
target,
|
||
|
|
Object.entries(others)
|
||
|
|
.reduce((preValue: string[], curValue) => {
|
||
|
|
const [key, value] = curValue;
|
||
|
|
return [...preValue, `${key}=${value}`];
|
||
|
|
}, [])
|
||
|
|
.join(','),
|
||
|
|
);
|
||
|
|
};
|
||
|
|
|
||
|
|
export const regexUrl =
|
||
|
|
/^(?!mailto:)(?:(?:http|https|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[0-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))|localhost)(?::\d{2,5})?(?:(\/|\?|#)[^\s]*)?$/i;
|
||
|
|
|
||
|
|
export default null;
|