ios - 如何在 WKWebView Swift 中提交表单?
问题描述
我一直在尝试使用WKWebView
填写网络表单并提交。到目前为止,我已经能够做到这一点。问题是WebView
一旦我使用下面的代码,表单就会从“插入元素”、“尝试提交”到“提交”无休止地循环。
let submitFunction = document.forms[0].submit();
有谁知道发生了什么?我怎样才能重写这段代码?
非常感谢!
import UIKit
import WebKit
class AnswerVC: UIViewController {
@IBOutlet weak var webView: WKWebView!
var questionText = "1+1"
override func viewDidLoad() {
super.viewDidLoad()
webView.navigationDelegate = self
}
override func viewWillAppear(_ animated: Bool) {
let url:URL = URL(string: "https://gamma.sympy.org/")!
let urlRequest:URLRequest = URLRequest(url: url)
webView.load(urlRequest)
}
}
extension AnswerVC: WKNavigationDelegate {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print("insert element")
let scriptFunction = "document.getElementById('id_i').value = '\(questionText)';"
webView.evaluateJavaScript(scriptFunction) { (result, error) in
if error != nil {
ProgressHUD.showError(error as? String)
} else {
print("trying to submit")
let submitFunction = "document.forms[0].submit();"
webView.evaluateJavaScript(submitFunction) { (result, error) in
if error != nil {
print(error?.localizedDescription)
} else {
print("submited")
}
}
}
}
}
}
解决方案
推荐阅读
- python - msg_dtype 如果 msg_dtype 不是 None else X.dtype) ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
- r - 在 Rshiny 中编辑其值时更改数据表单元格的背景颜色
- python - 在 Python 中读取 Matlab 文件并转换为数据框
- python - 如何纠正/改进我的 CNN 模型?如何处理验证准确性冻结问题?
- iframe - 如何在 iframe 中启用陀螺仪
- android - CameraConstrainedHighSpeedCaptureSession 不适用于 API 级别 30 (Android 11)
- graphql - Netflix 网关实施
- reactjs - 在功能组件的内部函数中调度动作
- keras - 如何在小图像网络数据集等低分辨率图像上使用预训练模型
- javascript - React Native 中的 viewDidAppear 等价物是什么