在 WKWebView 中填充输入文本字段

Posted

技术标签:

【中文标题】在 WKWebView 中填充输入文本字段【英文标题】:Populating input text field in WKWebView 【发布时间】:2015-04-10 12:35:23 【问题描述】:

我在由特定视图控制器控制的 WKWebView 中加载了以下 html 页面。 视图加载后,我希望应用程序自动填充页面中的输入文本字段。

在本例中,我希望应用在下面表单的“结果”文本字段中写入“Hello Result”。

<html>
<head>
    <title>Test Page</title>
</head>
<body>
<form>
 QR Result <input type="text" name="Result" >
</form>
</body>
</html>

这是我在视图控制器中将 HTML 页面加载为文件的代码:

   var htmlFile = NSBundle.mainBundle().pathForResource("apptest", ofType: "html")
        var contents = NSString(contentsOfFile: htmlFile!, encoding: NSUTF8StringEncoding, error: nil)
        self.webView?.loadHTMLString(contents!, baseURL: nil)

我如何加载视图(文件或 URL)并不重要。我想要做的是在加载视图之后填充该字段。

【问题讨论】:

【参考方案1】:

Uttam Sinha 的答案相当于 wkwebview/swift。

    webview.evaluatejavascript("document.getElementById('result').value = 'Hello Result';", completionHandler:  (res, error) -> Void in
        //Here you can check for results if needed (res) or whether the execution was successful (error)
    )

WKWebView 的版本更好,因为它会在执行 JS 出现问题时提供错误反馈。

【讨论】:

【参考方案2】:

我在文本字段中添加了 id 属性 -

<form>
 QR Result <input type="text" id="result" name="Result" />
</form>

在 Swift 中 -

func webViewDidFinishLoad(webView: UIWebView!)         
        self.wbView.stringByEvaluatingJavaScriptFromString("document.getElementById('result').value = 'Hello Result';")
    

查看截图 -

【讨论】:

您能快速提供示例吗? 你好,对不起,但这个适用于 UIWebView 而不是 WKWebView.. 无论如何谢谢 :) 哦,等价于 stringByEvaluatingJavaScriptFromString 的是 WKWebView 中的 evaluateJavaScript。检查这是否有效。

以上是关于在 WKWebView 中填充输入文本字段的主要内容,如果未能解决你的问题,请参考以下文章

在 keydown 上禁用 WKWebView “funk”声音,但允许输入输入字段

从 WKWebView 获取所有 cookie

如何从 webkit swiftUI 中的文本字段中搜索自定义文本

如何使用输入的文本字段填充 NSMutableArray

是否可以像 Whatsapp messenger 一样使用预填充文本输入字段的文本创建指向用户的链接?

将应用数据传递到网页中的特定文本字段