JavaScript的窗口位置HREF没有哈希?

我有:

var uri = window.location.href; 

这提供了http://example.com/something#hash

没有#hash的整个path的最好和最简单的方法是#hash

 uri = http://example.com/something#hash nohash = http://example.com/something 

我尝试使用location.origin+location.pathname这不适用于每个浏览器。 我尝试使用location.protocol+'//'+location.host+location.pathname这看起来像一个糟糕的解决scheme给我。

什么是最好的和最简单的方法呢? 也许我查询location.hash并尝试从uri substr()这?

location.protocol+'//'+location.host+location.pathname是正确的语法,如果你不关心端口号或查询string

如果你照顾:

https://developer.mozilla.org/en/DOM/window.location

 location.protocol+'//'+location.host+location.pathname+(location.search?location.search:"") 

要么

 location.protocol+'//'+location.hostname+(location.port?":"+location.port:"")+location.pathname+(location.search?location.search:"") 

你也可以做一个location.href.replace(location.hash,"")

 var uri = window.location.href.split("#")[0]; // Returns http://example.com/something var hash = window.location.href.split("#")[1]; // Returns #hash 
 location.href.replace(location.hash,"") 

较短的解决scheme:

  • 没有查询string和哈希location.href.split(location.search||location.hash||/[?#]/)[0]

  • 只有没有哈希location.href.split(location.hash||"#")[0]

(我通常使用第一个)

普遍的方式也是较小的?

 location.href.split(/\?|#/)[0]