有没有一个简单的方法可以从一个完整的URL开始:
document.location.href = "http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah"
只提取主部分:
aaa.bbb.ccc.com
肯定有JavaScript函数能可靠地做到这一点,但我找不到。
有没有一个简单的方法可以从一个完整的URL开始:
document.location.href = "http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah"
只提取主部分:
aaa.bbb.ccc.com
肯定有JavaScript函数能可靠地做到这一点,但我找不到。
当前回答
你可以连接位置协议和主机:
var root = location.protocol + '//' + location.host;
对于url,比如'http://stackoverflow.com/questions'它会返回'http://stackoverflow.com'
其他回答
使用文档。位置对象及其主机或主机名属性。
alert(document.location.hostname); // alerts "stackoverflow.com"
假设您有一个页面,其地址为http://sub.domain.com/virtualPath/page.htm。
使用下面的页面代码来实现这些结果:
Property | Result |
---|---|
window.location.host |
sub.domain.com:8080 or sub.domain.com:80 |
window.location.hostname |
sub.domain.com |
window.location.protocol |
http: |
window.location.port |
8080 or 80 |
window.location.pathname |
/virtualPath |
window.location.origin |
http://sub.domain.com (Might include :port too*****) |
更新:关于.origin
*****正如引用所述,window.location.origin的浏览器兼容性并不清楚。我在chrome中检查了它,如果端口不是80,它返回http://sub.domain.com:port,如果端口是80,则返回http://sub.domain.com。
特别感谢@torazaburo向我提到这一点。
接受的答案并没有为我工作,因为我希望能够与任何任意url的工作,而不仅仅是当前页面的url。
看一下URL对象:
var url = new URL("http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah");
url.protocol; // "http:"
url.hostname; // "aaa.bbb.ccc.com"
url.pathname; // "/asdf/asdf/sadf.aspx"
url.search; // "?blah"
use
window.location.origin
对于:“http://aaa.bbb.ccc.ddd.com/sadf.aspx?blah”
你会得到:http://aaa.bbb.ccc.ddd.com/
我想具体说明一些事情。如果有人想要得到完整的url路径像我需要的,可以使用:
var fullUrl = window.location.protocol + "//" + window.location.hostname + window.location.pathname;