我知道如何将数据从javascript传递到swift,但不知道如何将数据从swift传递到javascript。
我用来将数据从javascript传递到swift的方法如下:
<head>
<title>Test</title>
<meta charset="UTF-8">
</head>
<body>
<h1>WebView Test 3</h1>
<script>
function callNativeApp () {
try {
webkit.messageHandlers.callbackHandler.postMessage("Here");
} catch(err) {
console.log('The native context does not exist yet');
}
}
callNativeApp();
</script>
</body>
import UIKit
import WebKit
class ThirdViewController: UIViewController,WKScriptMessageHandler{
override func viewDidLoad() {
super.viewDidLoad()
let configuration=WKWebViewConfiguration()
let controller=WKUserContentController()
controller.addScriptMessageHandler(self, name: "callbackHandler")
configuration.userContentController=controller
let webView=WKWebView(frame: self.view.frame, configuration: configuration)
let url=NSBundle.mainBundle().URLForResource("test3", withExtension: "html")
let request=NSURLRequest(URL: url!)
self.view=webView
webView.loadRequest(request)
}
func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
if(message.name == "callbackHandler"){
print("callbackHandler: \(message.body)")
}
}
}
答案 0 :(得分:3)
如您所知,您通过调用postMessage将信息传递给Swift。
要从Swift向浏览器传递信息,您只需按evaluateJavascript
调用:
let num1 = 4
let num2 = 8
webView.evaluateJavaScript("addTwoNumbers(\(num1), \(num2);") { (result, error) in
guard error == nil else {
print("there was an error")
return
}
print(Int(result))
}
要使这个特定代码执行任何操作,您需要在Javascript中使用addTwoNumbers
函数来处理函数并完成某些操作。
答案 1 :(得分:0)
作为一个例子,我将采用这样的JS函数: -
function send_message(val01, val02) {
// you JS CODE
}
然后运行你应该调用的函数: -
self.webView.stringByEvaluatingJavaScriptFromString("send_message(\"\(self.value1)\", \"\(self.value2)\")")!