2016-06-08 75 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:的東西必須歸還。我相信你的代碼可能無法工作,因爲你正在設置一個值,而不是返回任何東西。