0

J'envoie une valeur à javascript, puis javascript me renvoie un résultat. Cependant, cela prend du temps pour que la valeur de retour (b) reste nulle car la fonction javascript nécessite du temps. Je pense que je devais créer un fil pour attendre le résultat. Le code ci-dessous ne renvoie rien.Sujet pour StringbyEvaluatingJavascript Fonction

func webViewDidFinishLoad(_ webView: UIWebView) 
{ 
    var b = "" 
    //Threat gcdc 
    DispatchQueue.main.async { 
    b = webView.stringByEvaluatingJavaScript(from: "getURL('\(self.song_number)')")! 
    } 
    print(b) 
} 
+0

Essayez d'utiliser ** evaluateJavaScript (_: completionHandler:) **. Je pense que vous avez une erreur. – Sergey

+0

@Sergey J'ai fait des recherches mais je ne sais pas comment l'utiliser. Pouvez-vous donner plus de détails? –

Répondre

0

Essayez d'utiliser evaluateJavaScript (_: completionHandler :)

webView.evaluateJavaScript("getURL('\(self.song_number)')") { (result, error) in 
     if let error = error 
     { 
     print("\(error)"); 
     return 
     } 
     if let song = result as? String 
     { 
     print("\(song)"); 
     } 
}