我的网络应用程序有一个输入字段,用户可以在其中输入指向其网站的链接。他们经常输入类似Twitter.com/mhluska
的东西,这不是有效的URL。我想自动修复它到https://twitter.com/mhluska
。
但URL可以指向任何域名。
我尝试使用a
标记来解析URL,但它只是将其作为当前原点的本地路径追加:
const elem = document.createElement('a');
a.href = 'Twitter.com/mhluska';
console.log(a.href); // "http://localhost:3000/some/path/Twitter.com/mhluska"
我查看了一些URL解析库,但它们通常只会为无效的URL引发错误。包括当地的URL API
。
是否有一种简单的方法可以尝试从用户输入的任何垃圾中创建有效链接?
您可以使用URL相对表示法。 URL中的主机名不区分大小写,现代浏览器将更改href字符串中的大小写。
const elem = document.createElement('a');
elem.href = '//Twitter.com/mhluska';
console.log(elem.href);