使用 jQuery 获取当前 URL?

我正在使用 jQuery。如何获取当前 URL 的路径并将其分配给变量?

范例网址:

http://localhost/menuname.de?foo=bar&number=0

答案

要获取路径,可以使用:

var pathname = window.location.pathname; // Returns path only (/path/example.html)
var url      = window.location.href;     // Returns full URL (https://example.com/path/example.html)
var origin   = window.location.origin;   // Returns base URL (https://example.com)

在纯 jQuery 样式中:

$(location).attr('href');

位置对象还具有其他属性,例如主机,哈希,协议和路径名。

http://www.refulz.com:8082/index.php#tab2?foo=789

Property    Result
------------------------------------------
host        www.refulz.com:8082
hostname    www.refulz.com
port        8082
protocol    http:
pathname    index.php
href        http://www.refulz.com:8082/index.php#tab2
hash        #tab2
search      ?foo=789

var x = $(location).attr('<property>');

仅当您使用 jQuery 时,此方法才有效。例如:

<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script>
  $(location).attr('href');      // http://www.refulz.com:8082/index.php#tab2
  $(location).attr('pathname');  // index.php
</script>
</html>

如果您需要 URL 中存在的哈希参数,那么window.location.href可能是一个更好的选择。

window.location.pathname
=> /search

window.location.href 
 => www.website.com/search#race_type=1

您将要使用 JavaScript 的内置window.location对象。

只需在 JavaScript 中添加此函数,它将返回当前路径的绝对路径。

function getAbsolutePath() {
    var loc = window.location;
    var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/') + 1);
    return loc.href.substring(0, loc.href.length - ((loc.pathname + loc.search + loc.hash).length - pathName.length));
}

我希望这个对你有用。

window.location 是 javascript 中的对象。它返回以下数据

window.location.host          #returns host
window.location.hostname      #returns hostname
window.location.path          #return path
window.location.href          #returns full current url
window.location.port          #returns the port
window.location.protocol      #returns the protocol

在 jQuery 中,您可以使用

$(location).attr('host');        #returns host
$(location).attr('hostname');    #returns hostname
$(location).attr('path');        #returns path
$(location).attr('href');        #returns href
$(location).attr('port');        #returns port
$(location).attr('protocol');    #returns protocol

这是比许多人想象的更为复杂的问题。若干浏览器支持内置的 JavaScript 位置对象以及可通过window.locationdocument.location访问的关联参数 / 方法。但是,不同版本的 Internet Explorer(6,7)不以相同的方式支持这些方法( window.location.hrefwindow.location.replace()不支持),因此您必须通过编写条件window.location.replace()来不同地访问它们。始终编写代码以手持 Internet Explorer。

因此,如果您有可用的 jQuery 并已加载,则最好使用 jQuery(位置),就像其他人提到的那样,因为它可以解决这些问题。但是,如果您正在做一个示例(例如通过 JavaScript 进行客户端地理位置重定向)(即使用 Google Maps API 和 location 对象方法),那么您可能不想加载整个 jQuery 库并编写条件代码,检查 Internet Explorer / Firefox / etc 等的每个版本。

Internet Explorer 使前端编码的猫感到不高兴,但是 jQuery 却是一堆牛奶。

仅对于主机名,使用:

window.location.hostname

这也将起作用:

var currentURL = window.location.href;