Pau*_*oke 5 javascript ios knockout.js applepay
在一个已经与 Apple Pay 集成的网站上工作了大约一年,没有出现任何问题。我们注意到,现在仅适用于 iOS 13 设备。iOS 12 及以下版本均按预期工作。
前端点击处理程序:
<div class="btn btn-apple">
<div class="apple-pay-button apple-pay-button-white" lang="en" data-bind="click: intializeApplePaySession"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS 点击处理程序:
self.intializeApplePaySession = function() {
new RestClient(RestClient.POST, "/rest/model/someController", {},
//Success
function(data, textStatus, jqXHR) {
var session = new ApplePaySession(3,data.applePayPaymentRequest);
initializeCallbacks(session);
session.begin();
},
...
Run Code Online (Sandbox Code Playgroud)
“必须从用户手势处理程序创建一个新的 ApplePaySession。” 总是被扔到
var session = new ApplePaySession(3,data.applePayPaymentRequest);
适用于所有 iOS 13 设备。iOS 12 及更低版本可以使用相同的代码正常工作。
从我的调试中我可以看到正在处理的事件是一个 MouseEvent,这对我来说很有意义。关于为什么会抛出这个有什么想法吗?
我们正在逐渐不再让网站在没有用户输入的情况下进行跨源调用。
其被锁定一段时间的方法之一是您无法触发,例如,表单的提交按钮......除非您从 click() 处理程序执行此操作。因此,您可以在页面上放置一个大而闪亮的“立即购买”图像,然后通过单击该图像提交表单,但您不能只执行setTimeout(form.submit(), 100)
我想你这里也有同样的事情。REST 调用位于 click 处理程序中,但 apple pay 调用位于 REST 调用的回调中,因此并不真正位于 click() 处理程序中。
当然,您正在使用 REST 调用来生成要传递给 Apple 的数据。您可能必须推测性地生成该数据。但在进行基础设施工作之前,我会尝试一下点击处理程序的异步版本是否通过了健全性检查。
| 归档时间: |
|
| 查看次数: |
7746 次 |
| 最近记录: |