我正在寻找一种在Javascript中获取当前文档的URL的简洁方法。
我知道我可以使用location.href获取当前的URL,然后使用一些正则表达式来清理它,但也许有一个更好/更清洁的解决方案来摆脱垃圾?
答案 0 :(得分:54)
href
中除window.location
之外还有许多其他参数。请参阅此处的完整参考:https://developer.mozilla.org/en/DOM/window.location
作为首发的人可能是window.location.hostname
:
“主机名(没有端口号或方块) 括号中)。“
从示例网址http://[www.example.com]:80/search?q=devmo#test
,主机名将为www.example.com
。
如果您还想包含路径并强制使用http://协议,请尝试:
'http://' + window.location.hostname + window.location.pathname;
作为旁注,从window.location获取与其他URL相同的参数的一个很好的技巧是创建一个空锚:
var a = document.createElement('a');
a.href = 'http://www.example.com:80/search?q=devmo#test';
console.log('http://' + a.hostname + a.pathname);
答案 1 :(得分:31)
没有给出的答案解决了OPs标题中协议可以是http或https的事实。为了适应这种情况,我建议:
document.location.protocol +"//"+ document.location.hostname + document.location.pathname
答案 2 :(得分:5)
Location object得到了你需要的东西
window.location.hostname + window.location.pathname
答案 3 :(得分:2)
你有document.location
个对象,所以:
var oLoc = document.location,
sUrl = oLoc.protocol + oLoc.hostname;
// or "http://" + oLoc.hostname
答案 4 :(得分:2)
您可以使用这些替换函数删除哈希和搜索参数,并将https规范化为http:
url = url.replace(/#[^#]*$/, "").replace(/\?[^\?]*$/, "").replace(/^https:/, "http:");
或者,如果你真正想要的只是域和路径,你可以使用它:
window.location.hostname + window.location.pathname
答案 5 :(得分:2)
请尝试以下代码段:
if (!window.location.origin){
// For IE
window.location.origin = window.location.protocol + "//" + (window.location.port ? ':' + window.location.port : '');
}
url = window.location.origin + window.location.pathname;
document.write('Origin url: ' + url);

答案 6 :(得分:0)
This页面表明您可能会使用window.location.host
来获取您真正感兴趣的部分。但我还没有测试过它。
答案 7 :(得分:0)
尝试:
window.location.hostname;