js获取当前域名、Url、相对路径和参数以及指定参数

博客介绍了JS相关信息,包括获取当前域名有2种方法,获取当前Url有4种方法,还介绍了获取当前相对路径、当前Url参数以及指定Url参数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、js获取当前域名有2种方法

	1、方法一
 var domain = document.domain;
  2、方法二
  var domain = window.location.host;
  3、注意问题
  由于获取到的当前域名不包括 http://,所以把获取到的域名赋给 a 标签的 href 时,别忘了加上 http://,否则单击链接时导航会出错。

二、获取当前Url的4种方法

	var url = window.location.href;

  var url = self.location.href;

  var url = document.URL;

  var url = document.location;

  ie 地址栏显示的是什么,获取到的 url 就是什么。

三、获取当前相对路径的方法

首先获取 Url,然后把 Url 通过 // 截成两部分,再从后一部分中截取相对路径。如果截取到的相对路径中有参数,则把参数去掉。

  function GetUrlRelativePath()
  {
    var url = document.location.toString();
    var arrUrl = url.split("//");

    var start = arrUrl[1].indexOf("/");
    var relUrl = arrUrl[1].substring(start);//stop省略,截取从start开始到结尾的所有字符

    if(relUrl.indexOf("?") != -1){
      relUrl = relUrl.split("?")[0];
    }
    return relUrl;
  }

  调用方法:GetUrlRelativePath();

举例:假如当前 Url 是 http// www. liangshunet. com/pub/item.aspx?t=osw7,则截取到的相对路径为:/pub/item.aspx。

四、获取当前Url参数的方法

1、获取Url参数部分

  function GetUrlPara()
  {
    var url = document.location.toString();
    var arrUrl = url.split("?");

    var para = arrUrl[1];
    return para;
  }

  调用方法:GetUrlPara()

  举例:假如当前 Url 是 http// www. liangshunet. com/pub/item.aspx?t=osw7,则截取到的参数部分为:t=osw7。

五、获取指定Url参数的方法

//paraName 等找参数的名称
  function GetUrlParam(paraName) {
    var url = document.location.toString();
    var arrObj = url.split("?");

    if (arrObj.length > 1) {
      var arrPara = arrObj[1].split("&");
      var arr;

      for (var i = 0; i < arrPara.length; i++) {
        arr = arrPara[i].split("=");

        if (arr != null && arr[0] == paraName) {
          return arr[1];
        }
      }
      return "";
    }
    else {
      return "";
    }
  }

  调用方法:GetUrlParam("id");

  举例说明:

  假如当网页的网址有这样的参数 test.htm?id=896&s=q&p=5,则调用 GetUrlParam("p"),返回 5。
<think>好的,我现在要解决用户的问题:用JavaScript获取URL的完整路径部分,但不包括文件名参数。首先,我需要回忆一下JavaScript中处理URL的相关属性方法。用户提供的引用内容里有提到一些方法,比如使用location.href,然后通过字符串处理来截取需要的部分。 首先,用户的需求是获取路径部分,比如对于URL http://example.com/path/to/page.html?param=1#section,他们想要得到的是/path/to/,也就是不包括文件名page.html参数?param=1以及哈希#section。 根据引用[3]中的例子,用户使用document.location.href获取完整的URL,然后通过lastIndexOf('/')找到最后一个斜杠的位置,再截取到该位置加一。不过这可能存在问题,比如当URL以文件名结尾时,最后一个斜杠可能是在文件名之前,但如果URL本身是以斜杠结尾的目录,那么结果可能正确。例如,http://example.com/dir/ 会被正确截取,而http://example.com/dir/file.html会得到http://example.com/dir/。 不过用户需要的是路径部分,不包括文件名参数,所以可能需要考虑location.pathname这个属性。location.pathname返回的是路径部分,比如对于上面的例子,pathname会是/path/to/page.html。这时候需要将路径中的文件名去掉,只保留目录部分。 这时候需要处理pathname,找到最后一个斜杠的位置,然后截取到该位置。例如,如果pathname是/path/to/page.html,那么最后一个斜杠在page.html之前,截取后得到/path/to/。如果路径本身就是以斜杠结尾的,比如/path/to/,则不需要处理,直接返回即可。 所以步骤应该是: 1. 获取location.pathname得到路径部分,如/path/to/page.html。 2. 找到最后一个斜杠的位置。 3. 截取从开始到最后一个斜杠的位置的部分,得到/path/to/。 4. 结合location.origin,这样就能得到完整的URL,包括协议、域名路径部分,比如http://example.com/path/to/。 但用户可能只需要路径部分,即/path/to/,或者完整的URL包括协议域名。需要明确用户的需求。根据问题描述,用户想要“URL的完整路径部分”,可能是指包括协议、域名路径,但不含文件名参数。例如,从http://example.com/path/to/file.html?query=1#hash得到http://example.com/path/to/。 这时候,可以结合location.originlocation.pathname处理后的结果。例如,origin是http://example.com,处理后的路径是/path/to/,组合起来就是完整的URL。 不过需要考虑如果pathname中没有文件名的情况,比如路径本身就是以斜杠结尾,那么不需要处理。例如,如果pathname是/path/to/,那么直接组合originpathname即可。 代码步骤可能如下: - 获取origin:location.origin - 获取pathname:location.pathname - 处理pathname,去掉最后一个文件名: - 找到最后一个斜杠的位置 - 如果pathname以斜杠结尾,则已经是目录,不需要处理 - 否则,截取到最后一个斜杠的位置加一 但是如何判断pathname是否以文件名结尾?比如,如果路径是/path/to/file.html,那么最后一个斜杠在to/之后,所以需要将file.html去掉。或者更准确地说,将路径视为目录结构,无论是否有文件名,都截取到最后一个斜杠的位置。 例如,pathname为/path/to/file.html,则截取到最后一个斜杠的位置为/path/to/。如果pathname是/path/to/,则已经是正确的目录。 所以,处理pathname的函数可以是: function getPathWithoutFileName() { const pathname = location.pathname; const lastSlashIndex = pathname.lastIndexOf('/'); return pathname.substring(0, lastSlashIndex + 1); } 然后完整的URL就是location.origin加上处理后的路径。 所以完整的代码可能是: function getFullPathWithoutFileAndParams() { const origin = location.origin; let pathname = location.pathname; const lastSlashIndex = pathname.lastIndexOf('/'); pathname = pathname.substring(0, lastSlashIndex + 1); return origin + pathname; } 不过需要测试各种情况: 测试案例1: 当前URL:http://example.com/path/to/file.html?query=1#hash pathname: /path/to/file.html 处理后pathname: /path/to/ 结果:http://example.com/path/to/ 测试案例2: 当前URL:http://example.com/path/to/?query=1 pathname: /path/to/ 处理后pathname: /path/to/ 结果:http://example.com/path/to/ 测试案例3: 当前URL:http://example.com/file.html pathname: /file.html 处理后pathname: / 结果:http://example.com/ 这可能符合预期吗?如果用户访问的是根目录下的文件,那么返回根目录的路径。这可能正确。 另一个情况,比如URL是http://example.com,此时pathname是空字符串?或者可能为'/',需要确认。 在JavaScript中,如果当前页面是http://example.com,location.pathname会返回'/'。所以处理后的pathname会变成'/',加上origin就是http://example.com/。 这应该是对的。 所以代码应该可以处理这些情况。 另外,引用[3]中的例子是使用document.location.href然后处理字符串,但可能更复杂。而使用location.pathname可能更直接。 总结,解决方案是使用location.originlocation.pathname,然后处理pathname去掉最后一个文件名部分,得到目录路径,再组合起来。 现在需要检查是否有其他方法或可能的错误。例如,如果路径中有多个斜杠,或者没有文件名的情况,比如路径以斜杠结尾,代码是否能正确处理。 是的,代码中处理lastSlashIndex,无论是文件名还是目录,都能正确截取到最后一个斜杠的位置,并保留斜杠。 因此,最终的JavaScript函数应该可以实现用户的需求。</think>要使用 JavaScript 获取 URL 的完整路径部分(不含文件名参数),可以通过以下步骤实现: ### 实现方法 1. **获取当前路径**:使用 `location.pathname` 获取路径部分(如 `/path/to/file.html`)。 2. **截取目录部分**:找到最后一个斜杠的位置,并截取到该位置之前的部分(如 `/path/to/`)。 3. **组合完整路径**:将协议、域名与处理后的路径拼接,形成完整路径。 ```javascript function getFullPathWithoutFile() { const origin = window.location.origin; let pathname = window.location.pathname; const lastSlashIndex = pathname.lastIndexOf('/'); pathname = pathname.substring(0, lastSlashIndex + 1); return origin + pathname; } // 示例:若当前 URL 是 http://example.com/path/to/file.html?param=1 // 输出结果为 http://example.com/path/to/ ``` ### 关键说明 - `location.origin`:获取协议、域名端口(如 `http://example.com:8080`)[^1]。 - `location.pathname`:返回 URL 的路径部分(如 `/path/to/file.html`)[^2]。 - `lastIndexOf('/')`:定位最后一个斜杠,确保截取到目录层级[^3]。 ### 应用场景 - 动态生成当前目录下的资源链接。 - 构建相对路径的 API 请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值