Javascript从swift获得价值

时间:2016-06-08 14:59:19

标签: javascript swift uiwebview

我正在尝试使用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函数不返回结果。

你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

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

function doSomething() {
    return 'test'
}

然后从iOS

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

result应该是值为"test"

的字符串

注意:必须返回某些内容。我相信你的代码可能不起作用,因为你设置了一个值,而不是返回任何东西。