2017-07-12 12 views
3

onClickイベントをすべてWKWebViewにキャッチしようとしています。私はこれをどのように行うことができますWKWebViewでのJavaScriptイベントの処理

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) 

: ウェブサイトでは、JavaScriptのみを使用ので、私は何を扱うことができないさで?

答えて

4

WKUserScriptを使用してWKWebViewの設定のuserContentControllerに追加することができます。

let config = WKWebViewConfiguration() 
    let source = "document.addEventListener('click', function(){ window.webkit.messageHandlers.iosListener.postMessage('click clack!'); })" 
    let script = WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: false) 
    config.userContentController.addUserScript(script) 
    config.userContentController.add(self, name: "iosListener") 
    webView = WKWebView(frame: UIScreen.main.bounds, configuration: config) 

これにより、ドキュメントの読み込みが完了するとスクリプトが作成され、ページに挿入されます。さて、あなたはメッセージを受信するWKScriptMessageHandlerプロトコルを実装する必要があります。

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { 
     print("message: \(message.body)") 
     // and whatever other actions you want to take 
    } 
+0

Thnx !!!! –