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