android webview onJsAlert只调用一次的问题

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;

    }

});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容