解决 vue-paypal-checkout 导致 PayPal 按钮未正常显示

问题

No handler found for post message: zoid_init from https://www.sandbox.paypal.com in http://localhost:9080/

以前在页面上使用 vue-paypal-checkout 封装后的 PayPal 是真方便,现在产品更新后,把 PayPal 按钮放到了弹窗内,就出问题了.

每次打开弹窗控制台都会报 No handler found for post message: zoid_init from https://www.sandbox.paypal.com in http://localhost:9080/ PayPal 按钮也没能正常显示出来.

stack overflow 上的大佬回答道,是 PayPal 脚本加载未完成前就显示了PayPal 按钮导致的,搜索 vue-paypal-checkoutissues 发现问题多出自组件嵌套内.

综上找到了原因:因为组件嵌套,导致 paypal 无法准确知道何时 dom 变化来获取 sdk ,在更改组件状态显示 PayPal 按钮时,PayPal 的 sdk 脚本还未完成加载,导致报错。

解决

找到了原因就方便解决问题了,既然不知道何时加载 PayPal 的 sdk ,那就直接在 HTML 上加载呗,使用原生 PayPal sdk 自己封装,简单粗暴,问题解决,撒花。

开个玩笑,都使用 vue-paypal-checkout 了还不是想 偷懒 提高效率嘛!

既然知道是因为 dom 变化引发的问题,那就在 dom 变化上解决问题,手动控制 PayPal 按钮的显示:


<template>
	<paypal v-if="paypalBtnShow"></paypal>
</template>

···

data(){
	return{
		paypalBtnShow: false
	}
}

mounted(){
    this.$nextTick(() => (this.paypalBtnShow = true));
}

···
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值