问问题
8762 次
2 回答
8
我自己解决了这个问题。这是我修复它的方法。
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-11-26T19:13:57.193 回答
2
您可以执行以下操作:(丑陋但会起作用)
在 onPageFinished() 中,将一个 javascript 代码片段注入到页面中,它执行以下操作:
- 迭代具有 target=_blank 属性的所有元素
- 将这些元素的 href 更改为 external://[original href]
如果该站点使用 jquery,它应该很容易。如果没有,您仍然可以使用标准 DOM Javascript 来完成。
在您的 shouldOverrideUrlLoading() 上,查找那些 external://* 链接并在外部打开它们。
为了注入 javascript ,请执行以下操作:
webView.loadUrl("javascript:(function() { PLACE YOUR JS CODE HERE })()");
于 2013-03-13T21:28:08.337 回答