是否可以检查用户是否点击了带有 target="_blank"的 html 链接。
我想做的是在我的应用程序中的 WebView 中显示 htlm,但在 android 默认浏览器中启动“外部”链接。 “外部”链接对我来说是带有 target="_blank"的链接。 所有其他链接都应在 webview 中处理。
例如:用户在我的 WebView 中点击这样的链接:
<a href="http://www.google.com" target="_blank">new window</a>
然后我想在 android 浏览器中打开给定的 url。
我尝试使用 shouldOverrideUrlLoading(),但此时我无法确定目标是“_blank”还是普通链接(没有目标)。
我也试过 setSupportMultipleWindows(true);结合 onCreateWindow(), 但在这个回调中我无法获取 url。
我无法更改显示的 HTML,所以我无法将 JavaScript Bridge 与 addJavascriptInterface() 一起使用
我还能做什么?还有其他想法吗?
最佳答案
我刚刚自己解决了这个问题。这是我修复它的方法。
mWebView.setWebChromeClient(new WebChromeListener() {
@Override
public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
WebView newWebView = new WebView(view.getContext());
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
return true;
}
});
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
}
});
关于javascript - 安卓 WebView : Determine <a> target= "_ blank",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15368885/