android开发调用javascript的调试过程中,有时候需要使用onJsAlert来输出javascript方法的信息,以帮助我们进行问题定位。
覆写WebChromeClient的onJsAlert方法即可:
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
return true;
}
很可惜的是,运行程序后只弹出了一次
而且后续的js方法无法继续进行。幸运的是,通过搜索,我们找到了问题的所在,需要在每次调完后设置参数JsResult调用cancel()或者confirm()方法,这样子:
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Utils.showDialog(getActivity(), message);//弹出AlertDialog
result.cancel();
return true;
}
在返回Fragment返回上个html
WebView在Activity中可以通过以下方法实现返回上一个网页:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
在Framment里重写webView的返回键
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if ((i == KeyEvent.KEYCODE_BACK) &&webView.canGoBack()) {
webView.goBack();
return true;
}
return false;
}
});