没有参数的当前URL,hash,http(s)://

时间:2012-03-01 09:35:47

标签: javascript string url

我正在寻找一种在Javascript中获取当前文档的URL的简洁方法。

  • 网址应该是参数的清除(?parameter1 = bla& parameter2 = bla)
  • URL应该是干净的哈希标签(#jumppoint)
  • http / https应删除/合并到http

我知道我可以使用location.href获取当前的URL,然后使用一些正则表达式来清理它,但也许有一个更好/更清洁的解决方案来摆脱垃圾?

8 个答案:

答案 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;