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

问题描述:

平时我们在使用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中注入,保证当前界面全部加载完成








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值