我一直在寻找新的 URL specification现在已在 Chrome Canary 中实现,看起来非常有用。
在将 URI 传递到 URL
对象之前,有什么方法可以验证它吗?
例如
var urlToCheck = "http//www.google.com";
if(URL.isValid(urlToCheck)) {
var u = new URL(urlToCheck, baseUrl);
console.log(u.hostname);
}
我在链接的规范文档中看不到任何内容。我真的不想为了检查 URI 是否有效而处理抛出的异常。
最佳答案
实际上,URL 构造函数的 2 参数版本接受任何内容作为其第一个参数:
try{
new URL(null, 'http://www.example.com');
new URL({ob:'jects',even:{nested:'ones'}}, 'http://www.example.com');
new URL(['arrays'], 'http://www.example.com');
new URL(/regexes/, 'http://www.example.com');
new URL(false, 'http://www.example.com');
new URL(undefined, 'http://www.example.com');
console.log('new URL() takes any value as its first parameter!');
}catch(e){}
这意味着您不必验证两个 URL;您只需验证基本 URL。因此,像这样的简单解决方案就足够了:
URL.isValid = function(url) {
try{
new URL(url);
} catch(e) {
return false;
}
return true;
};
关于javascript - URL 草案规范验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19653130/