目標は、 内に含まれる Web ページ内でコールバック関数を呼び出すことWKWebView
です。
evaluateJavaScript
パラメータに改行文字が含まれている場合、コールバック関数が呼び出されないことを意味します。
どうしてこれなの?
userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)
ユーザーが Web ページのボタンを押すと呼び出されます。
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
let dict = message.body as! [String:AnyObject]
let callback = dict["callback"] as! String
// Fails
let serializedClipboard = "hello\n"
// Works
// let serializedClipboard = "hello"
webView!.evaluateJavaScript("\(callback)('\(serializedClipboard)')") { (object: Any?, error: Error?) -> Void in
print("Done invoking \(callback)")
}
}