html - 如何使用 swift 在 WKWebView 中预填充网站上的文本框
问题描述
我对编码比较陌生,对使用 swift 非常陌生。我正在尝试创建一些东西,让我的用户可以在设置中设置用户名和密码,并让这些信息预先填写我设置的 WKWebView 的登录页面。目前我只是试图测试获取快速代码以将信息发送到文本字段。
除了几年前的一两个堆栈帖子之外,我找不到太多关于此的信息,但它们似乎对我不起作用。
根据我所阅读的内容,我需要执行一些 Javascript 来填充这些区域,但我所做的一切似乎都没有奏效。我将发布我在 swift 中使用的一小部分测试代码。如果有人能告诉我我做错了什么,或者我只是遗漏了一些明显的东西,那将不胜感激。
import UIKit
import WebKit
class ViewController: UIViewController {
@IBOutlet weak var WebView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL (string: "https://www.google.com")
let request = URLRequest(url: url!)
WebView.load(request)
}
func webViewDidFinishLoad(webView: WKWebView!) {
webView.evaluateJavaScript("document.getElementById('q').value = 'Hello' ;")
}
}
解决方案
推荐你可以这样使用,
// let source = "document.body.style.background = \"#777\";"
let source = "document.getElementById('q').value = 'Hello' ;"
let userScript = WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
let userContentController = WKUserContentController()
userContentController.addUserScript(userScript)
let configuration = WKWebViewConfiguration()
configuration.userContentController = userContentController
webView = WKWebView(frame: self.view.bounds, configuration: configuration)
view.addSubview(webView)
let url = URL (string: "https://www.google.com")
let request = URLRequest(url: url!)
webView.load(request)
正如 Apple 所说,WKUserContentController 对象为 JavaScript 提供了一种发布消息并将用户脚本注入 Web 视图的方法。
推荐阅读
- google-apps-script - form.setRequireLogin() 给出错误脚本错误消息:异常:不支持此操作
- sql - 如何使用多个近似匹配执行复杂 SQL 连接并仅返回第一个匹配
- java - Maven 程序集 jar 执行找不到或加载主类原因:java.lang.ClassNotFoundException
- python - 如何阻止我的机器人向 discord.py 发送垃圾邮件
- flutter - Flutter 是 Route 可见的吗?
- flutter - 单击列表项后如何导航到不同的屏幕?
- javascript - 防止 jQuery Datepicker 突出显示整周
- php - PHP中每页保留用户指定结果的分页
- html - 似乎无法获得适合全尺寸的背景图像(HTML,CSS)
- python-3.x - Pandas 条件语句和替换