搜索
您的当前位置:首页正文

android webview onJsAlert只调用一次的问

2024-12-17 来源:哗拓教育

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;

    }

});

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Top