【问题标题】:Accessing DOM element in WKwebView在 WKwebView 中访问 DOM 元素
【发布时间】:2016-01-05 01:04:57
【问题描述】:

在 swift 2.1 中,Xcode7.1.1

我的代码将本地 index.html 加载到 WKwebView 中。如何引用 textFields 以便设置它们的一些属性?喜欢myWebViewTextField.userInteractionEnabled = false 或myWebViewTextField.enabled = false

docs 说:

您可以通过将 windowScriptObject 发送到您的 WebView 对象来获得一个窗口 WebScriptObject 对象。

我不知道从这里怎么走。谢谢

import UIKit
import WebKit

class ViewController: UIViewController {
@IBOutlet var containerView: UIView! = nil  //allows the class to refrence WKWebView
var webView: WKWebView?

override func loadView() {
    super.loadView()

    self.webView = WKWebView()
    self.view = self.webView!
}

override func viewDidLoad() {
    super.viewDidLoad()
    //path explained http://www.cs.tut.fi/~jkorpela/fileurl.html
    let baseUrl = NSURL(string: "file:///<path>/")
    let path = NSBundle.mainBundle().pathForResource("index", ofType: "html")
    let HTMLString: NSString?

    do {
        HTMLString = try NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
        webView!.loadHTMLString(HTMLString as! String, baseURL: baseUrl )

    } catch {
        HTMLString = nil
    }
}

【问题讨论】:

    标签: ios swift2 wkwebview


    【解决方案1】:

    您正在阅读错误的课程文档。 WebView 和 WKWebView 不一样。后者更快、更安全,但不那么易于操作。

    对于 WKWebView,您可能希望使用 wkwebview.evaluateJavaScript 发送一整串对 DOM 进行操作的代码。 completionHandler 可以异步接收字符串和数字等简单结果,并基于这些结果触发更多 JS 评估,但您无法接收 DOM 元素引用并直接从 Swift 调整它们的属性。

    【讨论】:

    • 谢谢,我需要设置 'myWebViewTextField.userInteractionEnabled = false' 以便禁用 iOS 键盘,我可以通过 wkwebview.evaluateJavaScript 来做到这一点吗?我会更新这个问题。 :)
    • 您无法了解 WebKit 可能使用或不使用的底层 UIKit 元素 - 其他答案实际上是关于 UITextField,而您的 元素不是。
    • 您可以使用将textBox.hidden = !textBox.hidden 之类的javascript 命令发送到webview 来切换文本元素的可见性。或使用 .blur() 移除焦点。但是,如果您使用普通的 HTML 文本元素来接受输入,则无法绕过 WKWebView 中的 iOS 键盘。
    • _WKInputDelegate 协议 (wkwebview._formDelegate) 有一个私有标头,它有一个方法 func _webView(webView: WKWebView, focusShouldStartInputSession) 可以让您抑制键盘。 github.com/WebKit/webkit/blob/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2021-09-05
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多