Swift 在WKWebView中提交HTML

Swift 在WKWebView中提交HTML,swift,Swift,在Javascript中,您可以构建HTML并使用$(formElement).submit()在浏览器中提交HTML。我试图在Swift中也这样做,但得到一个空白屏幕。我没有试图显示HTML,而是在WKWebView中提交它 var finalHTML = “<form method='POST' action='https://secure.paygate.co.za/payweb3/process.trans'><input type='hidden' name='PAY

在Javascript中,您可以构建HTML并使用$(formElement).submit()在浏览器中提交HTML。我试图在Swift中也这样做,但得到一个空白屏幕。我没有试图显示HTML,而是在WKWebView中提交它

var finalHTML = “<form method='POST' action='https://secure.paygate.co.za/payweb3/process.trans'><input type='hidden' name='PAY_REQUEST_ID' value='DC917AF1-C2A6-AEDA-2412-2F355752989C'></input><input type='hidden' name='CHECKSUM' value='1F69DF2D455FAAE2797F5F44FA7BEB05'></input></form>”

webView.navigationDelegate = self
webView.allowsBackForwardNavigationGestures = true
webView.configuration.userContentController.add(self, name: "message")
self.webView.loadHTMLString(finalHTML, baseURL: nil)
var finalHTML=“”
webView.navigationDelegate=self
webView.AllowsBackforwardNavigationPigests=true
webView.configuration.userContentController.add(self,名称:“message”)
self.webView.loadHTMLString(finalHTML,baseURL:nil)

我已将以下内容添加到您的原始代码中(更正后):

  • +
    标记
  • onload
    使用JavaScript在页面加载后立即触发表单提交
  • onload
    包含一个
    setTimeout()
    包装触发提交的代码,这通常是不需要的,但为了额外的安全性,我添加了它
  • 删除
    userContentController
    ,我认为不需要它(除非表单提交后还有其他事情发生)
请尝试更新的代码:

var finalHTML = "<html><body onload='setTimeout(function() { document.querySelector('form').submit() }, 1)'><form method='POST' action='https://secure.paygate.co.za/payweb3/process.trans'><input type='hidden' name='PAY_REQUEST_ID' value='DC917AF1-C2A6-AEDA-2412-2F355752989C'></input><input type='hidden' name='CHECKSUM' value='1F69DF2D455FAAE2797F5F44FA7BEB05'></input></form></body></html>"

webView.navigationDelegate = self
webView.allowsBackForwardNavigationGestures = true
self.webView.loadHTMLString(finalHTML, baseURL: nil)
var finalHTML=“”
webView.navigationDelegate=self
webView.AllowsBackforwardNavigationPigests=true
self.webView.loadHTMLString(finalHTML,baseURL:nil)