支付后全局变量改变

2024-09-05 02:04
文章标签 支付 改变 全局变量

本文主要是介绍支付后全局变量改变,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

if (router.query.recharge_back_URI) {const _url = decodeURIComponent(router.query.recharge_back_URI as string);const url = new URL(_url, location.href);if (url.origin === location.origin) {router.replace(url.pathname);} else {location.href = url.href;}}

解释

这段代码的作用是检查 router.query 中是否包含 recharge_back_URI 参数,并根据这个参数的值执行相应的导航或重定向操作。

代码详解

if (router.query.recharge_back_URI) {const _url = decodeURIComponent(router.query.recharge_back_URI as string);const url = new URL(_url, location.href);if (url.origin === location.origin) {router.replace(url.pathname);} else {location.href = url.href;}
}
1. 检查 recharge_back_URI 参数
if (router.query.recharge_back_URI) {
  • 这行代码首先检查 router.query 对象中是否存在 recharge_back_URI 参数。
  • router.query 是 Next.js 路由对象,用于获取 URL 中的查询参数。如果存在 recharge_back_URI,则继续执行后续操作。
2. 解码 URL
const _url = decodeURIComponent(router.query.recharge_back_URI as string);
  • 这一行将 recharge_back_URI 参数的值进行 URL 解码。decodeURIComponent 用于将编码过的 URI 部分解码为正常的字符串形式。
3. 创建 URL 对象
const url = new URL(_url, location.href);
  • 这里使用 URL 构造函数来创建一个 URL 对象,传入 _url 作为相对或绝对 URL,location.href 作为基础 URL。
  • URL 构造函数可以处理相对 URL,并自动将其解析为完整的绝对 URL。
4. 判断目标 URL 与当前页面的 origin 是否一致
if (url.origin === location.origin) {router.replace(url.pathname);
} else {location.href = url.href;
}
  • url.originlocation.origin 是 URL 的协议、域名和端口的组合(例如 https://example.com)。
  • 这里的逻辑是:
    • 如果目标 URL 的 origin 与当前页面的 origin 相同,则使用 router.replace 方法将用户导航到目标 URL 的路径部分 (url.pathname)。router.replace 会替换浏览器历史记录中的当前条目,而不是创建一个新的条目。
    • 如果目标 URL 的 origin 不同,则直接通过 location.href 将页面重定向到目标 URL。这个操作会导致浏览器加载新的页面,可能会离开当前站点。

总结

这段代码的功能是在处理用户支付完成后的回调场景下,根据 recharge_back_URI 指定的路径或 URL,决定是本地导航到同源路径,还是重定向到其他域名的页面。它确保了在本地路径跳转时不会改变浏览器历史记录,而在跨域跳转时直接重定向用户。

这篇关于支付后全局变量改变的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137658

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

react笔记 8-18 事件 方法 定义方法 获取/改变数据 传值

1、定义方法并绑定 class News extends React.Component {constructor(props) {super(props)this.state = {msg:'home组件'}}run(){alert("我是一个run") //方法写在类中}render() {return (<div><h2>{this.state.msg}</h2><button onCli

在实现回显功能模块的时候,把ID设置成全局变量了

在hsapprove.jsp中: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><script type="text/javascript">function edittodayhs(hsid){//alert(hsid);//

【前端】animation动画以及利用vue制作简单的透明度改变动画,包含vue生命周期实现

一. 问题描述 想做一个文字透明度从1到0然后再从0到1的css动画。 二. 代码写法 2.1 animation写法 2.1.1 animation属性key 2.1.2 代码展示 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=de

HTML5如何成为改变移动互联网幕后的推手

在未来的某一天,我们打开手机,不再需要访问手机应用商店,不论是 Apple的还是Google的,我们只需要点击手机主菜单页面上的一个链接,手机就会立即在它的浏览器上启动一个 “应用程序”;再也不需要flash插件,就能欣赏华丽丽视频画面。   AD:2013云计算架构师峰会课程资料下载   2012年,说HTML5集千宠万爱于一身也毫不夸张,IE、Chrome、Firefox和Opera等

jsapi 支付缺少appid ¬ify_url

$.ajax({url: 'url',type: 'get',dataType: "json",//改成jsonsuccess: function (data) {//$('#xx').val(data)WeixinJSBridge.invoke('getBrandWCPayRequest', $.parseJSON(data),function(res){if(res.err_msg == "

“设计模式双剑合璧:工厂模式与策略模式在支付系统中的完美结合”

工厂模式(Factory Pattern)和策略模式(Strategy Pattern)都是常见的设计模式,但它们解决的问题和应用场景不同。下面是它们的区别: 1. 目的不同: 工厂模式(Factory Pattern): 工厂模式的主要目的是创建对象。它通过定义一个创建对象的接口,让子类决定实例化哪一个具体类,从而将对象创建的逻辑与使用的代码分离。 工厂模式可以分为简单工厂、工厂方法和抽象

社群空间站付费入群系统易支付版全套搭建教程

社群空间站9.9付费入群系统易支付版全套搭建教程 1.创建站点 2.搭建环境 php7.2 3.上传源码包 数据库批量修改sq9.dongge1.icu s10.dongge1.icu 改为你的域名 4.上传数据库 修改数据库文件/data/config/ 5.访问域名 6.账户密码 admin 123456 7.易支付修改地址是在/data/tpl/app/default/yy_

心觉:如何用一颗心改变世界和自己

关于如何开发自己的潜意识开发的底层逻辑和注意事项 我这里就不赘述了,可以看我前面的文章 今天主要讲一下,如何让我们祈祷的作用发挥到极致 这里提到了祈祷,其实就是正念 把自己的梦想,目标,愿望通过积极的语言 或者生动形象的画面告诉自己的潜意识 你的这些梦想,目标,愿望就会慢慢地变成现实 这是真的,有无数的案例可以证实 我这里就不举例子了,大家可以网上搜 我只讲一下,为什么有些人