1

使用 Javascript 在域部分之后获取“任何内容”部分的最佳方法是什么:

http://www.domain.com/anything
http://www.domain.com/#anything
http://www.domain.com/any/thing

对于http://www.domain.com/#anything我将不得不使用window.location.hash。但是对于http://www.domain.com/anything我将不得不使用window.location.pathname

我在用着:

window.location.href.replace(window.location.origin, "").slice(1)

这个解决方案有什么注意事项吗?有没有更好的办法?

4

2 回答 2

4

注意事项:
location.origin IE 不支持。
其他改进:.slice实际上是调用Array.prototype.slice. 需要原型查找的方法调用肯定比直接访问您需要的元素要慢,尤其是在您的情况下,该slice方法无论如何都会返回一个只有 1 个元素的数组。所以:

您可以使用location.pathname,但请注意:标准如下:

pathname
此属性表示位置 URI 的路径组件,它由主机和端口之后的所有内容组成,直到第一个问号 (?) 或井号 (#)。

但我认为获得所需内容的最简单、最 X 浏览器的方法实际上就是这样做:

var queryString = location.href.split(location.host)[1];
//optionally removing the leading `/`
var queryString = location.href.split(location.host)[1].replace(/^\//,'');

它与您现在拥有的非常相似,除了我没有使用location.origin如 MDN上所示,MS 的 IE 不支持它......
另一个好处是我没有调用Array.prototype.slice,它返回一个数组,并且需要原型查找,这也稍微慢一些......

于 2013-10-01T09:33:42.670 回答
4

window.location.pathname + window.location.search + window.location.hash

我觉得这个稍微好一点。您不必在这里使用任何功能...

于 2013-10-01T09:27:33.773 回答