JS获取浏览器地址,不带参数

JavaScript获取完整URL路径

window.location.protocol+"//"+window.location.host+""+window.location.pathname

<think>我们正在使用Vue 3,需要获取浏览器地址和携带的参数。根据引用,有两种主要方式:路由参数(在路径中)和查询参数(在?后面)。在Vue 3中,我们可以使用Vue Router来获取,也可以使用原生的URLSearchParams或正则匹配。 根据引用[3],Vue3中可以通过路由配置来获取路径参数(如/:code)。而查询参数(如?key=value)则可以通过路由对象的currentRoute.value.query或原生的window.location获取。 因此,我们有两种情况: 1. 获取路由参数(动态路径参数):需要在路由定义中设置,如`path: '/user/:id'`,然后通过`route.params.id`获取。 2. 获取查询参数(URL参数):通过`route.query.key`获取,或者使用原生方法(当没有使用路由时)。 在Vue3中,我们通常使用Vue Router,因此推荐使用路由的hook来获取参数。 具体步骤: 1. 在组件中引入Vue Router的useRoute钩子。 2. 调用useRoute()获取当前路由对象。 3. 从route.params中获取路径参数,从route.query中获取查询参数。 如果没有使用Vue Router,或者需要获取完整的URL,可以使用浏览器原生的window.location对象。 下面分别给出示例: </think>### Vue 3 获取浏览器地址参数的完整指南 在 Vue 3 中获取浏览器地址参数,主要有两种方式:**路由参数**(动态路径)和**查询参数**(URL 问号后的参数)。以下是具体实现方法: --- ### 一、获取路由参数(动态路径参数)[^3][^4] 适用于形如 `https://domain.com/user/123` 的 URL 格式: ```javascript // router/index.js import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ history: createWebHistory(), routes: [ { path: '/user/:id', // 定义动态参数":id" component: () => import('./views/User.vue') } ] }) ``` ```vue <!-- User.vue --> <script setup> import { useRoute } from 'vue-router' const route = useRoute() const userId = route.params.id // 获取参数值(如123) </script> <template> <div>用户ID: {{ userId }}</div> </template> ``` --- ### 二、获取查询参数(URL参数)[^1][^2] 适用于形如 `https://domain.com/search?keyword=vue&page=1` 的 URL: ```vue <script setup> import { useRoute } from 'vue-router' const route = useRoute() const params = route.query // 获取参数对象 console.log(params.keyword) // "vue" console.log(params.page) // "1" </script> ``` --- ### 三、使用路由获取参数(原生方法) 当需要获取当前页面完整URL或非路由页面参数时: ```vue <script setup> import { onMounted } from 'vue' // 获取完整URL const fullURL = window.location.href // https://domain.com?test=abc // 解析查询参数(推荐方法) const getQueryParams = () => { const params = new URLSearchParams(window.location.search) return Object.fromEntries(params.entries()) } onMounted(() => { const urlParams = getQueryParams() console.log(urlParams.test) // "abc" }) </script> ``` --- ### 四、处理特殊字符和编码 当参数包含特殊字符(如空格、中文)时: ```javascript // 解码参数(处理%20等编码) const decodedParam = decodeURIComponent(route.query.param) // 编码参数(跳转时使用) const encodedValue = encodeURIComponent('带空格的值') router.push(`/path?data=${encodedValue}`) ``` --- ### 五、三种方法对比 | **方法** | **适用场景** | **优点** | **缺点** | |------------------------|------------------------------|-----------------------------------|------------------------| | `route.params` | 路径参数 `/user/:id` | 参数结构化,SEO友好 | 需要预定义路由 | | `route.query` | 查询参数 `?key=value` | 灵活,无需预定义 | 参数暴露在URL中 | | `URLSearchParams` | 非路由页面或完整URL解析 | 依赖Vue Router,纯浏览器API | 需要手动处理 | --- ### 示例:综合获取路径和查询参数 ```vue <script setup> import { useRoute } from 'vue-router' const route = useRoute() // 路径参数(如 /product/42) const productId = route.params.id // 查询参数(如 ?color=red) const color = route.query.color // 完整URL const fullURL = window.location.href </script> ``` > **最佳实践**:优先使用 `useRoute()` 获取参数,仅在非路由页面使用原生方法[^1][^2]。参数包含JSON时使用 `JSON.parse(decodeURIComponent(param))` 解析对象[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qaakd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值