2016-08-15 61 views
0

| Android系統Webview(52.0.2743.98)的最新更新之後,我注意到javascript無法使用onJsAlert方法執行。在新的Android系統Webview更新之後,Javascript並沒有在onJAlert回調中執行

更具體地說,下面的代碼段停止了最新的更新

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); 
    } 

} 

工作後,我還檢查該接口已被設置正確

mWebView.setWebChromeClient(new MyWebChromeClient()); 

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

有沒有人在同樣的問題來了?

回答

0

爲解決釷暗示給了我,當我返回false爲onJAlert

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

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

     return false; 
    } 

如果客戶端返回true,將網頁視圖假設客戶端將處理對話框。如果客戶端返回false,它將繼續執行。所以通過返回false我在我的用戶界面上有一個對話框,當我按下確定JavaScript執行。所以我只是從JsResult調用確認,就像按下OK按鈕

@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; 
    }