您的位置:首页 > 移动开发

WebView爬坑之旅2--a标签是target="_blank"时创建新窗口

2017-11-10 11:47 2471 查看
如果网页里链接的a标签是target=”_blank”,而碰巧你的WebView又没有处理,那这个时候就会出现狂点链接/button页面却无动于衷的情况,给人想砸手机的感觉…

好了,解决方案其实也挺简单的,继承WebChromeClient,重写onCreateWindow是关键,请看代码:

/**
* 当网页里a标签target="_blank",打开新窗口时,这里会调用
*/
@Override
public boolean onCreateWindow(WebView webView, boolean isDialog, boolean isUserGesture, Message resultMsg) {
X5WebView newWebView = new X5WebView(activity);
X5WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
newWebView.setWebChromeClient(new CustomWebChromeClient(activity));
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (activity != null) {
//拦截url,跳转新窗口=,=
Intent intent = new Intent(activity, CommWebActivity.class);
intent.putExtra(Constants.INTENT_KEY_URL, url);
activity.startActivity(intent);
}
//防止触发现有界面的WebChromeClient的相关回调
return true;
}
});
transport.setWebView(newWebView);
resultMsg.sendToTarget();

return true;
//        return super.onCreateWindow(webView, isDialog, isUserGesture, message);
}


前提要设置这个,不然不会走回调

webSetting.setSupportMultipleWindows(true);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐