В 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)
Я добавил следующее в ваш исходный код (после ваших исправлений):
<html>
+ <body>
теги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)