2016-06-08 50 views
0

我试图从javascript中使用swift获得值。我正在使用IUWebView。我用这段JavaScript代码来获取值:Javascript从swift中获得价值

var myVar = null;  

function getValue(key) { 
    webkit.messageHandlers.getValue.postMessage(key); 
    return myVar; 
} 

而且这块斯威夫特的返回值:

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

看来您可能正在使用第三方框架,但UIWebview的stringByEvaluatingJavaScriptFromString(_ :)方法以String形式返回由js函数返回的任何内容。所以,如果你的Javascript是

function doSomething() { 
    return 'test' 
} 

然后你的iOS

调用 doSomething()
let js = "doSomething()" 
let result = webView.stringByEvaluatingJavaScriptFromString(js) 

result应符合"test"

注意值的String:的东西必须归还。我相信你的代码可能无法工作,因为你正在设置一个值,而不是返回任何东西。