从URL获取协议,域和端口
我需要从给定的URL中提取完整的协议,域和端口。 例如:
https://localhost:8181/ContactUs-1.0/contact?lang=it&report_type=consumer
>>>
https://localhost:8181
首先得到当前地址
var url = window.location.href
然后解析该字符串
var arr = url.split("/");
你的网址是:
var result = arr[0] + "//" + arr[2]
希望这可以帮助
var full = location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '');
这些答案似乎都没有完全解决这个问题,这个问题需要一个任意的url,而不是专门的当前页面的url。
方法1:使用URL API(警告:不支持IE11)
您可以使用URL API(不受IE11支持,但在其他地方可用)。
这也使得访问搜索参数变得很容易。 另一个好处是:它可以在Web Worker中使用,因为它不依赖于DOM。
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:'
奖金:搜索参数
因为'?startIndex = 1&pageSize = 10'本身不太可用,所以你可能会想要分割搜索url params。
如果您使用上面的方法1(URL API),则只需使用searchParams getters:
url.searchParams.get('searchIndex'); // '1'
或者获取所有参数:
Array.from(url.searchParams).reduce((accum, [key, val]) => {
accum[key] = val;
return accum;
}, {});
// -> { startIndex: '1', pageSize: '10' }
如果你使用方法2(旧方法),你可以使用这样的东西:
// Simple object output (note: does NOT preserve duplicate keys).
var parms = url.search.substr(1); // remove '?' prefix
params.split('&').reduce((accum, keyval) => {
const [key, val] = keyval.split('=');
accum[key] = val;
return accum;
}, {});
// -> { startIndex: '1', pageSize: '10' }
链接地址: http://www.djcxy.com/p/3847.html
上一篇: Get protocol, domain, and port from URL
下一篇: How can I download a new remote branch without merging?