首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android WebView:确定<a> target= "_ WebView“

Android WebView:确定<a> target= "_ WebView“
EN

Stack Overflow用户
提问于 2013-03-13 02:10:51
回答 2查看 8.5K关注 0票数 11

是否可以检查用户是否已经点击了具有target="_blank“的html链接。

我想要做的是在WebView中显示我的应用程序中的htlm,但在安卓默认浏览器中启动“外部”链接。“外部”链接对我来说是一个与target="_blank“的链接。所有其他链接应在网页视图中处理。

例如:用户在我的WebView中点击一个类似这样的链接:

代码语言:javascript
复制
<a href="http://www.google.com" target="_blank">new window</a>

然后我想在android浏览器中打开给定的url。

我尝试过使用shouldOverrideUrlLoading(),但是在这一点上我不能确定目标是"_blank“还是一个普通的链接(没有目标)。

我还尝试了setSupportMultipleWindows(true);与onCreateWindow()结合使用,但在这个回调中我无法获得url。

我不能改变显示的超文本标记语言,所以我不能在addJavascriptInterface()中使用JavaScript桥。

我还能做什么?还有别的主意吗?

EN

回答 2

Stack Overflow用户

发布于 2013-11-27 03:13:57

我刚刚自己解决了这个问题。下面是我修复它的方法。

代码语言:javascript
复制
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;
    }
});
票数 8
EN

Stack Overflow用户

发布于 2013-03-14 05:28:08

您可以执行以下操作:(丑陋的,但可以工作)

在onPageFinished()中,将javascript代码片段注入到页面中,该代码片段执行以下操作:

原始href遍历所有具有外部引用的元素,将这些元素的attribute

  • change设置为://
  1. href

如果站点使用jquery,那应该很简单。如果没有,你仍然可以使用标准的DOM Javascript来完成。

在您的shouldOverrideUrlLoading()中,查找那些外部://*链接并在外部打开它们。

要注入javascript,请执行以下操作:

代码语言:javascript
复制
webView.loadUrl("javascript:(function() { PLACE YOUR JS CODE HERE })()");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15368885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档