【发布时间】:2019-01-19 06:10:27
【问题描述】:
我正在尝试让 Javascript-Swift 界面与 WKWebView 一起工作,似乎有人让它工作了 here。
但是我无法让它在 Swift 中工作(我是 Swift 新手,也是 Obj-C 的新手)。我在 ViewController.swift 中尝试了以下代码,并将 WKWebView 添加到 Main.storyboard 并连接:
import WebKit
class ViewController: NSViewController, WKUIDelegate {
@IBOutlet weak var wkWebView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "http://127.0.0.1:8080")
let request = URLRequest(url: url!)
wkWebView!.configuration.preferences.javaScriptEnabled = true
wkWebView!.load(request)
}
}
extension WKWebView {
open override func invokeUndefinedMethod(fromWebScript name: String!, withArguments arguments: [Any]!) -> Any! {
return "Hello From Swift"
}
}
在 HTML 方面:
<html>
<body>
<p>Hello World</p>
<input type=text id='i'/>
<input type=button value='Submit' onclick='document.getElementById(\"i\").value = window.external.MY_ObjectiveCFunction();'>
</body>
</html>
但是当我点击提交按钮时没有任何反应。如果我使用document.getElementById("i") = "hello",它可以工作。 @ctrlspace 似乎已经让它以某种方式工作了(见上面的链接)。
有什么想法吗?
【问题讨论】:
标签: ios swift xcode macos wkwebview