ios - 在 WKwebView 中访问 DOM 元素

标签 ios swift2 wkwebview

在 swift 2.1 中,Xcode7.1.1

我的代码将本地 index.html 加载到 WKwebView 中。我怎样才能引用 textFields 以便我可以设置它们的一些属性?像 myWebViewTextField.userInteractionEnabled = falsemyWebViewTextField.enabled = false

docs说:

You get a window WebScriptObject object by sending windowScriptObject to your WebView object.

我不确定如何从这里开始。谢谢

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
    }
}

最佳答案

您正在阅读错误的类文档。 WebView 和 WKWebView 不一样。后者更快、更安全,但不那么可操纵。

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

关于ios - 在 WKwebView 中访问 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34602662/

相关文章:

swift - 如何将协议(protocol)限制为仅值类型?

ios - Xcode Swift 代码中使用的不同方案中的环境变量

swift - 如何防止 WKWebView 的 “User Agent” header 发生更改?

ios - WKWebView 从 HTTP 请求中注入(inject) cookie

iPhone/iOS : Best practices to shorten launch time of an app?

ios - 如何检测正在进行的语音识别

ios - Swift 3/如何重用扩展

swift - map 返回的数组顺序

uiactionsheet - 在 WKWebView 上禁用 WKActionSheet

ios - 我可以为 View 设置动画以从隐藏中淡入吗?