是否有一种非常简单的方法可以从完整的 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 函数可以可靠地执行此操作,但我找不到它。
假设您有一个具有以下地址的页面:http://sub.domain.com/virtualPath/page.htm
。在页面代码中使用以下内容来实现这些结果:
window.location.host
: 你会得到sub.domain.com:8080
或sub.domain.com:80
window.location.hostname
: 你会得到 sub.domain.com
window.location.protocol
: 你会得到 http:
window.location.port
: 你会得到8080
或80
window.location.pathname
: 你会得到 /virtualPath
window.location.origin
: 你会得到http://sub.domain.com
****更新:关于 .origin
***** 正如ref所述,浏览器兼容性window.location.origin
尚不清楚。我已经在 chrome 中检查过它,http://sub.domain.com:port
如果端口不是 80,并且http://sub.domain.com
端口是 80 ,它就会返回。
特别感谢@torazaburo 向我提及这一点。
您可以连接位置协议和主机:
var root = location.protocol + '//' + location.host;
对于一个 url,比方说'http://stackoverflow.com/questions'
,它会返回'http://stackoverflow.com'
接受的答案对我不起作用,因为希望能够使用任何任意 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"
使用document.location
对象及其host
或hostname
属性。
alert(document.location.hostname); // alerts "stackoverflow.com"
有两种方法。第一个是这里另一个答案的变体,但这个占非默认端口:
function getRootUrl() {
var defaultPorts = {"http:":80,"https:":443};
return window.location.protocol + "//" + window.location.hostname
+ (((window.location.port)
&& (window.location.port != defaultPorts[window.location.protocol]))
? (":"+window.location.port) : "");
}
但我更喜欢这种更简单的方法(适用于任何 URI 字符串):
function getRootUrl(url) {
return url.toString().replace(/^(.*\/\/[^\/?#]*).*$/,"$1");
}