const url = new URL('http://example.com:12345/blog/foo/bar?startIndex=1&pageSize=10');
方法2(旧方法):在DOM中使用浏览器的内置解析器
如果您需要这个也可以在旧浏览器上使用,请使用此选项 .
// Create an anchor element (note: no need to append this element to the document)
const url = document.createElement('a');
// Set href to any path
url.setAttribute('href', 'http://example.com:12345/blog/foo/bar?startIndex=1&pageSize=10');
// Get any piece of the url you're interested in
url.hostname; // 'example.com'
url.port; // 12345
url.search; // '?startIndex=1&pageSize=10'
url.pathname; // '/blog/foo/bar'
url.protocol; // 'http:'
14 回答
window.location.protocol'//'window.location.host
这些答案似乎都没有完全解决这个问题,这个问题需要一个任意的URL,而不是当前页面的url .
方法1:使用URL API(警告:没有IE11支持)
您可以使用URL API(IE11不支持,但可用everywhere else) .
这也使得访问search params变得容易 . 另一个好处是:它可以在Web Worker中使用,因为它不依赖于DOM .
方法2(旧方法):在DOM中使用浏览器的内置解析器
如果您需要这个也可以在旧浏览器上使用,请使用此选项 .
就是这样!
浏览器的内置解析器已经完成了它的工作 . 现在您可以 grab 所需的部件(请注意,这适用于上述两种方法):
奖励:搜索参数
有可能你也可能想要拆分搜索网址参数,因为'?startIndex = 1&pageSize = 10'本身并不太可用 .
如果您使用上面的方法1(URL API),则只需使用searchParams getters:
或者获取所有参数:
如果您使用方法2(旧方法),您可以使用以下内容:
出于某种原因,所有答案都是过度杀伤力 . 这就是所需要的:
更多细节可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/API/window.location#Properties
这意味着如果您只想获得HTTP / HTTPS部分,可以执行以下操作:
对于您可以使用的域:
对于您可以使用的端口:
请记住,如果端口在URL中不可见,则该端口将为空字符串 . 例如:
http://example.com/将为端口返回“”
http://example.com:80/将为端口返回80
如果您在没有端口使用时需要显示80/443
实际上,window.location.origin在遵循标准的浏览器中运行良好,但猜猜是什么 . IE不符合标准 .
因此,这在IE,FireFox和Chrome中对我有用:
但是对于可能导致冲突的未来可能的增强,我在“location”对象之前指定了“window”引用 .
尝试使用正则表达式(Regex),当您想要验证/提取内容甚至在javascript中进行一些简单的解析时,这将非常有用 .
正则表达式是:
示范:
现在您也可以进行验证 .
首先获取当前地址
然后只解析该字符串
你的网址是:
希望这可以帮助
host
返回
localhost:2679
hostname
返回
localhost
window.location.origin
就足够了 .正如已经提到的那样,尚未完全支持
window.location.origin
但是不是使用它或创建一个新变量来使用,我更喜欢检查它,如果没有设置它 .例如;
几个月前我真的写了这篇文章A fix for window.location.origin
ES6样式,带有可配置参数 .