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]