android Webview中注入js,用于解决第三方页中出现返回事件window.history.go(-1),无法响应问题

来源:互联网 发布:tensorflow文字识别 编辑:程序博客网 时间:2024/05/08 21:39

问题描述:

平时我们在使用WebView时,出现第三方页中出现返回事件window.history.go(-1),这时点击网页中的返回页面就一直重新刷不能退出当前界面

解决方案:

通过在android Webview中注入js,用于解决无法响应问题。

例如如下网页test.html:

<!DOCTYPE"><html> <head>  <title> New Document </title>  <meta charset="utf-8">    <!--允许全屏-->    <meta content="yes" name="apple-mobile-web-app-capable" />    <meta content="yes" name="apple-touch-fullscreen" />    <!--禁止电话号码和邮箱识别-->    <meta content="telephone=no,email=no" name="format-detection" />    <!--添加一个ios用的icon-->    <!--改成你想要的缩放比例-->    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" /> </head> <body>  <div id="jump-back-btn">返 回</div> </body></html>
在Android代码中:
WebSettings webSettings = mWebview.getSettings() ;webSettings.setDefaultTextEncodingName( "utf-8");webSettings.setJavaScriptEnabled(true);mWebview.addJavascriptInterface(new JSInterface(), "TEST_WEB");   //声明android端相应js中方法的回调接口  注意“TEST_WEB”与js中声明的要对应 mWebview.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                return true;            }            @Override            public void onPageFinished(WebView view, String url) {                super.onPageFinished(view, url);                mWebview.loadUrl("javascript:function testapi(){TEST_WEB.finish();}$(\".jump-back-btn\").on(\"click\",function(){testapi();window.history.go(-1);return false;})");            }        });mWebview .loadUrl("file:///android_asset/test.html");public class JSInterface {        @JavascriptInterface        public void finish() {            TestActivity.this.finish();        }    }



向webview中注入js事件,注意要在onPageFinished中注入,保证当前界面全部加载完成








0 0