2016-06-08 7 views
0

Ich versuche, einen Wert von schnell mit Javascript zu erhalten. Ich benutze ein IUWebView. Ich benutze dieses Stück Javascript um den Wert zu erhalten:Javascript erhalten Wert von swift

var myVar = null;  

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

Und dieses Stück Swift den Wert zurück:

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) 
     } 
    } 
} 

Der Javascript-Code wird der SWIFT-Code correcly Aufruf und der SWIFT-Code wird immer der Wert von NSUserDefaults aber das Ergebnis wird nicht von der JavaScript-Funktion zurückgegeben.

Können Sie mir bei diesem Problem helfen?

Antwort

0

Es scheint, dass Sie ein Framework von Drittanbietern verwenden, aber die Methode stringByEvaluatingJavaScriptFromString (_ :) von UIWebview gibt die von der js-Funktion zurückgegebenen Zeichen als String zurück. Also, wenn Ihr Javascript ist

function doSomething() { 
    return 'test' 
} 

Dann rufen Sie doSomething() von iOS

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

result sollte ein String mit dem Wert von "test"

Hinweis sein:, die etwas zurückgegeben werden muss. Ich glaube, dass Ihr Code möglicherweise nicht funktioniert, weil Sie einen Wert festlegen und nichts zurückgeben.