gpt4 book ai didi

javascript - PayPal 灯箱无法在 iPhone safari/web 应用程序中打开; 'win.location' 未定义

转载 作者:行者123 更新时间:2023-11-29 18:22:21 27 4
gpt4 key购买 nike

(在 iPhone 上的 Chrome 中运行良好)

我收到这个错误:

TypeError: 'undefined' is not an object (evaluating 'win.location') in dg.js line 3

而且灯箱打不开。

PayPal 的 dg.js 中的相关代码是:

startFlow: function (url) {
var win = that._render();
if (win.location) {
win.location = url;
} else {
win.src = url;
}
}

那么移动Safari是不是不懂that._render()?我该如何解决这个问题?

如果重要的话,我正在使用 Adaptive Payments,这样调用它:

var dg = new PAYPAL.apps.DGFlow({
trigger: null,
expType: 'light'
});
dg.startFlow('https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey=' +data.paykey);

我在获取 payKey 时没有任何问题,而且整个 payflow 在台式机和移动浏览器中工作,但 Safari 除外(它适用于桌面 Safari)。当我们的网站作为 iOS 网络应用程序运行时,它也不起作用,我认为它只是 Safari 的外壳。

最佳答案

我可以解释为什么您会看到此错误。iOS 上的 Safari 仅允许在用户单击/触摸事件时打开窗口。

DGFlow._render() 函数执行:

window.open('', "PPDG");

如果由用户点击/触摸事件以外的任何事件触发,则返回 null。

我猜您正在发出 XMLHttpRequest 以在服务器上生成 PayRequest/PayKey,然后在 onsuccess 回调中调用 DGFlow.startFlow()。

解决方案是将过程分为两步:

  1. 当用户准备结帐时,向服务器发出调用以生成支付 key 。
  2. 然后,向用户显示一个使用 PayPal 结账的按钮,点击后调用 DGFlow.startFlow()

关于javascript - PayPal 灯箱无法在 iPhone safari/web 应用程序中打开; 'win.location' 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17216172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com