【问题标题】:How to get anything following the domain in a url, using Javascript如何使用 Javascript 在 url 中获取域之后的任何内容
【发布时间】:2013-10-01 09:21:21
【问题描述】:

使用 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)

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

【问题讨论】:

    标签: javascript url hash window.location


    【解决方案1】:

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

    您可以使用location.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,MS 的 IE 不支持as shown on MDN...
    另一个好处是我没有调用Array.prototype.slice,它返回一个数组,并且需要原型查找,这也稍微慢了一点......

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • ? 被忽略后不会得到page?some=params
      • http://youtube.com/watch?v=1234 之类的网址,您的代码将返回watch 作为路径名...
      猜你喜欢
      • 2010-11-17
      • 2014-03-04
      • 2012-10-27
      • 2022-01-24
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 2013-03-19
      相关资源
      最近更新 更多