有没有一种非常简单的方法可以从完整的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函数可以做到这一点,但我找不到它。
我有一个在StackOverflow回答中没有看到过的技巧:
使用图像的“src”属性可以得到您网站的完整基础路径。
例如:
var dummy = new Image;
dummy.src = '$'; // using '' will fail on some browsers
var root = dummy.src.slice(0,-1); // remove trailing '$'
http://domain.com/somesite/index.html
的URL中,root
将被设置为http://domain.com/somesite/
。这也适用于本地主机或任何有效的基本URL。$
虚拟图像的HTTP请求失败。您可以改用现有的图像来避免这种情况,只需进行轻微的代码更改即可。var dummy = document.createElement ('a');
dummy.href = '';
var root = dummy.href;
虽然我没有在每种浏览器上进行测试。
var fullUrl = window.location.protocol + "//" + window.location.hostname + window.location.pathname;
正则表达式提供了更多的灵活性。
//document.location.href = "http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah
//1.
var r = new RegExp(/http:\/\/[^/]+/);
var match = r.exec(document.location.href) //gives http://aaa.bbb.ccc.com
//2.
var r = new RegExp(/http:\/\/[^/]+\/[^/]+/);
var match = r.exec(document.location.href) //gives http://aaa.bbb.ccc.com/asdf
我的解决方案适用于包括微软Internet Explorer在内的所有网络浏览器,且不使用任何正则表达式,其灵感来自Noah Cardoza和Martin Konecny的解决方案:
function getHostname(href) {
if (typeof URL === 'object') {
// workaround for MS IE 11 (Noah Cardoza's solution but without using Object.assign())
var dummyNode = document.createElement('a');
dummyNode.href = href;
return dummyNode.hostname;
} else {
// Martin Konecny's solution
return new URL(href).hostname;
}
}
您可以使用/
拆分URL字符串
const exampleURL = "Https://exampleurl.com/page1/etc/etc"
const URLsplit = exampleURL.split("/")
console.log(URLsplit)
console.log(URLsplit[2])
结果。exampleurl.com