首页 > 其他分享 >如何使用js获取当前的url和来源的url?

如何使用js获取当前的url和来源的url?

时间:2024-11-28 10:24:55浏览次数:8  
标签:const log url referrer URL js 获取 window location

在 JavaScript 中,你可以使用不同的方法获取当前 URL 和来源 URL(Referrer URL)。

获取当前 URL:

  • window.location.href: 返回完整的 URL,包括协议、域名、路径、查询参数和哈希。这是最常用的方法。
  • window.location.origin: 返回 URL 的 origin 部分,包括协议、域名和端口。
  • window.location.pathname: 返回 URL 的路径部分。
  • window.location.search: 返回 URL 的查询字符串部分(问号之后的部分)。
  • window.location.hash: 返回 URL 的哈希部分(井号之后的部分)。

获取来源 URL (Referrer URL):

  • document.referrer: 返回当前页面的来源 URL。如果用户直接输入 URL 访问当前页面,或者从书签、浏览器历史记录或 PDF 文件中打开页面,则 document.referrer 将为空字符串。 需要注意的是,由于隐私和安全原因,浏览器对 referrer 信息的处理方式可能有所不同,有时可能无法获取到完整的 referrer URL,甚至可能为空。

示例:

// 获取当前 URL
const currentURL = window.location.href;
console.log("Current URL:", currentURL);

const currentOrigin = window.location.origin;
console.log("Current Origin:", currentOrigin);

const currentPathname = window.location.pathname;
console.log("Current Pathname:", currentPathname);

const currentSearch = window.location.search;
console.log("Current Search:", currentSearch);

const currentHash = window.location.hash;
console.log("Current Hash:", currentHash);


// 获取来源 URL
const referrerURL = document.referrer;
console.log("Referrer URL:", referrerURL);


//  一个更健壮的获取 referrer URL 的方法,处理空值:
const getReferrer = () => {
  return document.referrer || null; // 或返回其他默认值,例如 ""
}

const referrer = getReferrer();
console.log("Referrer (with handling for null):", referrer);



// 解析查询参数
const urlParams = new URLSearchParams(window.location.search);
const myParam = urlParams.get('myParam');
console.log("Value of 'myParam':", myParam);

跨域问题:

由于浏览器的同源策略,获取跨域 referrer URL 时可能会受到限制。 浏览器可能会将 referrer 信息设置为不完整或为空,以保护用户隐私。 具体行为取决于浏览器和服务器的配置。 例如,如果从 HTTPS 页面跳转到 HTTP 页面,referrer 信息可能会被省略或设置为仅包含 origin 部分。

总结:

使用 window.location 对象可以方便地获取当前 URL 的各个部分,而 document.referrer 可以获取来源 URL。 但在处理 referrer 信息时,需要注意跨域问题和浏览器行为的差异。 建议使用更健壮的代码来处理可能为空的 referrer 值。

标签:const,log,url,referrer,URL,js,获取,window,location
From: https://www.cnblogs.com/ai888/p/18573709

相关文章