我正在尝试使用javascript从swift获取值。我正在使用IUWebView。我使用这段Javascript来获取值:
var myVar = null;
function getValue(key) {
webkit.messageHandlers.getValue.postMessage(key);
return myVar;
}
这片Swift返回值:
func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
if(message.name == "getValue") {
if let value = NSUserDefaults.standardUserDefaults().stringForKey(message.body as! String) {
self.webView?.evaluateJavaScript("myVar = "+value+";", completionHandler: nil)
}
}
}
javascript代码正在调用swift代码,swift代码从NSUserDefaults
获取值,但javascript函数不返回结果。
你能帮我解决这个问题吗?
答案 0 :(得分:0)
看起来您可能正在使用第三方框架,但UIWebview的stringByEvaluatingJavaScriptFromString(_ :)方法返回js函数返回的任何内容,如String。所以如果你的Javascript是
function doSomething() {
return 'test'
}
然后从iOS
调用doSomething()
let js = "doSomething()"
let result = webView.stringByEvaluatingJavaScriptFromString(js)
result
应该是值为"test"
注意:必须返回某些内容。我相信你的代码可能不起作用,因为你设置了一个值,而不是返回任何东西。