2016-08-15 11 views
0

| Android 시스템 Webview (52.0.2743.98)의 최신 업데이트 이후에 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); 
    } 

} 

후 작동이 중지? 클라이언트가 true를 반환하면 나는 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를 반환 할 때 솔루션

답변

0

목 힌트가 나에게 주어졌다, 웹보기는 클라이언트가 대화 상자를 처리 할 것으로 가정합니다. 클라이언트가 false를 반환하면 실행을 계속합니다. 그래서 false를 반환하여 내 UI에서 대화 상자를 얻었고 ok를 누르면 javascript가 실행되었습니다. 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; 
    }