我有一个输入,用户输入一个有效的网址。我需要单独获取URL,查询字符串(如果用户输入)和哈希(如果用户输入)。
到目前为止,我已经这样做了:
var url = input_value.split('?')[0]; //get url
var qs = input_value.split('?')[1].split('#')[0]; //get query string value
var hash = input_value.split('#')[1]; //get hash value
但是,如果用户没有输入任何查询字符串,只是哈希值,则会引发未定义的错误。
http://test.com/some-thing/ref?v1=obscurecode&something&else#1234
因此,对于网址,它应该返回:http://test.com/some-thing/ref
查询字符串:?v1=obscurecode&something&else
哈希:#1234
答案 0 :(得分:-1)
最好使用try
和catch
阻止。
try {
var url = input_value.split('?')[0]; //get url
} catch (e) {
var url = input_value;
}
try {
var qs = input_value.split('?')[1].split('#')[0]; //get query string value
} catch (e) {
var qs = "";
}
try {
var hash = input_value.split('#')[1]; //get hash value
} catch (e) {
var hash = "";
}
这将帮助您避免任何未捕获的类型错误。我使用了url = input_value
,以防没有查询字符串。
控制台输出
这适用于您的用例: