是否可以检查用户是否已经点击了具有target="_blank“的html链接。
我想要做的是在WebView中显示我的应用程序中的htlm,但在安卓默认浏览器中启动“外部”链接。“外部”链接对我来说是一个与target="_blank“的链接。所有其他链接应在网页视图中处理。
例如:用户在我的WebView中点击一个类似这样的链接:
<a href="http://www.google.com" target="_blank">new window</a>然后我想在android浏览器中打开给定的url。
我尝试过使用shouldOverrideUrlLoading(),但是在这一点上我不能确定目标是"_blank“还是一个普通的链接(没有目标)。
我还尝试了setSupportMultipleWindows(true);与onCreateWindow()结合使用,但在这个回调中我无法获得url。
我不能改变显示的超文本标记语言,所以我不能在addJavascriptInterface()中使用JavaScript桥。
我还能做什么?还有别的主意吗?
发布于 2013-11-27 03:13:57
我刚刚自己解决了这个问题。下面是我修复它的方法。
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;
}
});发布于 2013-03-14 05:28:08
您可以执行以下操作:(丑陋的,但可以工作)
在onPageFinished()中,将javascript代码片段注入到页面中,该代码片段执行以下操作:
原始href遍历所有具有外部引用的元素,将这些元素的attribute
如果站点使用jquery,那应该很简单。如果没有,你仍然可以使用标准的DOM Javascript来完成。
在您的shouldOverrideUrlLoading()中,查找那些外部://*链接并在外部打开它们。
要注入javascript,请执行以下操作:
webView.loadUrl("javascript:(function() { PLACE YOUR JS CODE HERE })()");https://stackoverflow.com/questions/15368885
复制相似问题