2016-08-15 13 views
0

| AndroidシステムWebview(52.0.2743.98)の最新の更新後、javascriptがonJsAlertメソッドで実行できないことに気付きました。新しいAndroidシステムWebviewの更新後にJavaScriptがonJAlertコールバック内で実行されない

は、具体的には次のコードは、私はまた、インターフェイスが正しく設定されている

mWebView.setWebChromeClient(new MyWebChromeClient()); 

    WebSettings webSettings = mWebView.getSettings();  
    webSettings.setJavaScriptEnabled(true); 
    mWebView.addJavascriptInterface(new CustomInterface(), "CustomInterface"); 

は、誰もが同じ問題に出くわしたことが確認されている最新のアップデート

private class MyWebChromeClient extends WebChromeClient { 

    @Override 
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 

      view.loadUrl(javascript:(function(){CustomInterface.completeAction(document.head.innerHTML)})()); 

     return super.onJsAlert(view, url, message, result); 
    } 

} 

後に動作を停止しましたか?解決のための

答えて

0

Thのヒントは私に与えられた私はonJAlert

@Override 
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 

      view.loadUrl(javascript:(function(){CustomInterface.completeAction(document.head.innerHTML)})()); 

     return false; 
    } 

のためにfalseが返されたときにクライアントがtrueを返した場合は、WebViewのは、クライアントが対話を処理することを前提としています。クライアントがfalseを返すと、それは実行を継続します。だからfalseを返すことによって、私は自分のUI上にダイアログボックスを持っていました。そしてOKを押すと、javascriptが実行されました。 OKボタンを押すようなJsResultからの確認をちょうど呼びました。

@Override 
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 
      result.confirm(); 
      view.loadUrl(javascript:(function(){CustomInterface.completeAction(document.head.innerHTML)})()); 

     return true; 
    } 
関連する問題