swift2 在WKwebView中访问DOM元素

fafcakar  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(248)

在SWIFT 2.1中,Xcode7.1.1
我的代码将一个本地index.html加载到WKwebView中。我如何才能拥有对textField的引用,以便设置它们的一些属性?比如myWebViewTextField.userInteractionEnabled = falsemyWebViewTextField.enabled = false
医生说:
通过将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
    }
}
rsaldnfx

rsaldnfx1#

你阅读错了类的文档。WebView和WKWebView是不同的。后者更快更安全,但可操作性差。
对于WKWebView,您可能希望使用wkwebview.evaluateJavaScript来发送对DOM进行操作的整个代码字符串。completionHandler可以 * 异步 * 接收字符串和数字等简单结果,并基于这些结果触发更多的JS求值,但您不能接收DOM元素引用并直接从Swift调整它们的属性。

相关问题