【问题标题】:How to pre-fill a text box on a website in a WKWebView using swift如何使用 swift 在 WKWebView 中预填充网站上的文本框
【发布时间】:2019-05-17 15:28:46
【问题描述】:

我对编码比较陌生,对使用 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' ;")
    }
 }

【问题讨论】:

    标签: html swift xcode


    【解决方案1】:

    推荐你可以这样使用,

    //   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)
    

    as Apple said,WKUserContentController 对象为 JavaScript 提供了一种发布消息并将用户脚本注入 Web 视图的方法。

    【讨论】:

    • 哦,等等,没关系,我让它可以与其他网站一起使用,但出于某种原因,它只是不想与 google 一起使用。谢谢!
    • 我不确定您是否仍在检查此线程,但您是否有任何特定原因使用子视图执行此操作?可以不做吗? @dengApro
    • 无子视图。唯一的区别是你使用storyboard,我使用代码创建WKWebView。
    猜你喜欢
    • 1970-01-01
    • 2012-02-24
    • 2014-05-31
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    相关资源
    最近更新 更多