2015-01-08 10 views
12

をスローします:WKWebview evaluateJavascriptが動作していない、私はWKWebviewで、リモートサイトから既存の関数を呼び出すしようとしていますエラー

Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo=0x170c788c0 {NSLocalizedDescription=A JavaScript exception occurred} 

これはとても簡単です!私は本当にばかげた何かを欠いているはずです!

+0

jQueryはそのページにロードされていますか? – AstroCB

+0

はい、完全に機能するウェブサイト、私はフェイスブックのログインを動作させるためのブリッジを構築しています。また、この関数は、通常ブラウザを呼び出すときにも機能します。 –

+0

jQueryなしで試してください: 'document.getElementById( 'webviewtest')。innerHTML = text;'。たぶん 'html'メソッドが失敗するかもしれません。 – Pinal

答えて

27

解決策が見つかりました。私は期待していたほどシンプルでしたが、コンテンツが完全に表示される前にjavascriptを追加していました(Dom Readyの前)。

私はこれが誰かを役に立てば幸い(WKNavigationDelegateから):

  • のWebView:didFinishNavigationだから、僕は以下のデリゲートメソッドに私のコードを移動しなければなりませんでした。

+0

これは解決策です!うんざりだけど、私に多くの時間を救ってくれてありがとう。 –

+0

私のために働いていません。 – Jitendra

+0

デリゲートを実装しましたか? –

3

この問題は、ページコンテンツが実際に読み込まれる前にwebView:didFinishNavigation:が呼び出されたことが原因であることがわかりました。私はウェブサイトがangularjsを使用していると思います。

私は私のためにDのトリックに見えた手動遅延導入:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 
     print("loaded)") 
     //abtn_run(UIButton()) 
     self.perform(#selector(performAction), with: nil, afterDelay: 3.0) 


    } 

をし、ここに私のコールをした:

func performAction() { 
      //This function will perform this after delay of 3 seconds 
    } 

理想的に最善の解決策は、リスナーがイベントをプッシュする必要がありますangularjs "page ready"しかし、私はこれがwkwebviewで可能であるかどうかはわかりません。

関連する問題