Javascript 自定义条带签出按钮赢得';我不能在手机上工作

Javascript 自定义条带签出按钮赢得';我不能在手机上工作,javascript,php,jquery,stripe-payments,Javascript,Php,Jquery,Stripe Payments,我目前正在将Stripe集成到一个网站中,并且遇到了一个与定制结帐集成的问题 我遵循了上的自定义集成说明,它在桌面上工作得很好,但不幸的是在移动设备上什么也做不到 我在jQuery中有一个处理程序,它在单击自定义按钮时启动,并根据文档运行handler.open({…}),但记录了以下JavaScript错误: TypeError: 'undefined' is not an object (evaluating '(s=this.frame).focus') - checkout.js:2:2

我目前正在将Stripe集成到一个网站中,并且遇到了一个与定制结帐集成的问题

我遵循了上的自定义集成说明,它在桌面上工作得很好,但不幸的是在移动设备上什么也做不到

我在jQuery中有一个处理程序,它在单击自定义按钮时启动,并根据文档运行
handler.open({…})
,但记录了以下JavaScript错误:

TypeError: 'undefined' is not an object (evaluating '(s=this.frame).focus') - checkout.js:2:21656
有什么想法吗

编辑:经过多次尝试后,我发现如果通话延迟超过1秒左右,它将无法在iOS 7中启动

例如,以下工作:

setTimeout(function(){stripe_payment();}, 1000);
但以下情况并非如此:

setTimeout(function(){stripe_payment();}, 2000);

在上面的示例中,
stripe\u payment()
设置并调用处理程序。正如最初提到的,在AJAX调用之后调用处理程序时也会产生相同的影响(这可能需要很长时间)。同样值得注意的是,即使在桌面浏览器上延迟5秒也可以正常工作。

这是因为
此.frame
未定义。在Stripe的checkout.js中,
这个.frame实际上是在错误之前设置的:

this.frame = window.open(this.fullPath(), "stripe_checkout_tabview")
出现此问题的原因是
window.open
失败。这是因为浏览器的弹出窗口拦截器<代码>窗口。打开
只能从某些事件处理程序(如按下按钮)成功调用。如果您在(足够长的)超时时间调用它,它可能会失败


您需要直接从按钮的单击事件调用
handler.open({…})
。如果您是根据AJAX请求的结果调用它,您需要重构代码,这样就不需要这样做了。

您可以展示代码吗?我已经添加了一些额外的细节@andreemes,有什么想法吗?仅供参考,Stripe文档:Works!中也提到了这一点(带有示例)!即使在使用直接单击函数时,我也需要这样做,但是在其中有一个回调?我是否将其添加到按钮onclick=“handler.open({…})”中?