是否有一种非常简单的方法可以从完整的 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:80window.location.hostname : 你会得到 sub.domain.comwindow.location.protocol : 你会得到 http:window.location.port: 你会得到8080或80window.location.pathname : 你会得到 /virtualPathwindow.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");
}