首页 > 解决方案 > 如何使用 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' ;")
    }
 }

标签: htmlswiftxcode

解决方案


推荐你可以这样使用,

//   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 视图的方法。


推荐阅读