window.location.href和window.open方法导航

window.location.href 是用于获取或设置当前窗口的 URL 的属性,它通常用于导航到新的页面或重新加载当前页面。它的值是一个字符串,包含当前页面的 URL。要导航到当前页面内的不同路由(例如 React Router 中的路由),可以通过设置 window.location.href 的值来实现。

导航到内部路由的方法

  1. 相对路径

    如果你要导航到相对于当前页面的路径,通常你可以使用相对路径。例如

    window.location.href = '/path/to/route';
    

  2. 使用绝对路径

    如果你知道内部路由的完整路径(包括主机名和路径部分),可以直接将其赋值给 window.location.href。例如:

    window.location.href = 'https://example.com/path/to/route';
    

     3.动态生成路径

对于需要动态生成路径的情况,可以根据具体的逻辑生成完整的 URL 或相对路径,然后将其赋值给 window.location.href

React Router 中的注意事项

如果你正在使用 React Router 或其他客户端路由库,通常不需要直接使用 window.location.href 来进行路由导航,因为这种方式会完全刷新页面,导致 React 组件状态丢失。React Router 提供了 <Link> 组件或 history API(如 history.push())来进行内部路由的导航,这些方法能够在不刷新整个页面的情况下实现路由跳转。

window.open() 方法用于在浏览器中打开新窗口或标签页,并加载指定的 URL。它可以用来导航到内部路由或任何有效的 URL,包括相对路径、绝对路径以及带参数的路径。

使用方法

打开新窗口或标签页
window.open('https://example.com/path/to/route', '_blank');

 

  • 第一个参数是要打开的 URL。可以是绝对路径、相对路径或带参数的路径。
  • 第二个参数是窗口的名称或标识符。通常使用 '_blank' 表示在新标签页或窗口中打开。
导航到相对路径
window.open('/path/to/route', '_blank');
  • 在 React 应用中,如果使用相对路径,则会相对于当前域名和路径进行导航。
动态生成路径
const route = `/path/to/${dynamicId}`;
window.open(route, '_blank');
  • 可以根据需要动态生成路径,并将其作为参数传递给 window.open()

注意事项

  • 弹出窗口阻止器:浏览器通常会阻止自动打开新窗口,特别是在没有用户交互的情况下。在大多数现代浏览器中,必须在用户操作(例如点击按钮)中触发 window.open() 才能成功打开新窗口。

  • 安全性考虑:打开新窗口可能会被浏览器的弹出窗口阻止功能阻止,或者被浏览器设置为只有在安全操作下才能使用。因此,建议仅在确保用户体验和安全性的情况下使用。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
window.location.hrefwindow.opener.location.href都是用于获取或设置当前页面的URL。 window.location.href是获取或设置当前页面的URL。可以通过将一个新的URL赋值给window.location.href导航到该URL。例如,可以使用window.location.href = "https://www.example.com"将当前页面导航到https://www.example.com。 window.opener.location.href是获取或设置打开当前页面的父页面的URL。它在使用window.open()方法打开一个新窗口后才有值。可以通过将一个新的URL赋值给window.opener.location.href导航到父页面的URL。例如,可以使用window.opener.location.href = "https://www.parentpage.com"将父页面导航到https://www.parentpage.com。 需要注意的是,window.opener.location.href只能在通过window.open()方法打开的新窗口中使用,而不能在同一窗口或不是通过window.open()方法打开的窗口中使用。而window.location.href可以在任何窗口中使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [window.location.href的用法(动态输出跳转)](https://blog.csdn.net/weixin_31690531/article/details/115238595)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值