0

目標は、 内に含まれる 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)")
    }
}
4

1 に答える 1

2

機能しているように見える 1 つのオプションは、パラメーター内の改行文字をエスケープすることです。

let escapedClipboard = serializedClipboard.stringByReplacingOccurrencesOfString("\n", withString: "\\n")

よりクリーンなソリューションが見つかった場合は、提案を投稿してください。

于 2016-10-27T19:46:55.253 に答える