美文网首页
WebView新窗口打开链接

WebView新窗口打开链接

作者: 念念不忘_2016 | 来源:发表于2017-12-07 18:00 被阅读0次

webview本身貌似不支持这种实现,但是我们可以通过修改链接,实现同样的效果,即在同一个webview上打开一个新窗口的链接,首先回顾一下html知识:


image.png

如果一个链接是新窗口打开,则其target值为"_blank",所以我们在onPageFinished()方法中,通过加载js,修改目标链接,使其在本webview中打开

private  class MyWebview extends WebViewClient{
//这里是重点,这里修改链接
    @Override
    public void onPageFinished(WebView view, String url) {
        view.loadUrl("javascript: var allLinks = document.getElementsByTagName('a'); if (allLinks) {var i;for (i=0; i<allLinks.length; i++) {var link = allLinks[i];var target = link.getAttribute('target'); if (target && target == '_blank') {link.setAttribute('target','_self');link.href = 'newtab:'+link.href;}}}");
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub
        if(url.startsWith("newtab:")){
            String realUrl=url.substring(7,url.length());
            Intent it = new Intent(Intent.ACTION_VIEW);
            it.setData(Uri.parse(realUrl));
            startActivity(it);
        }else{
            view.loadUrl(url);
        }
        return true;
    }

相关文章

  • WebView新窗口打开链接

    webview本身貌似不支持这种实现,但是我们可以通过修改链接,实现同样的效果,即在同一个webview上打开一个...

  • 每日前端签到(第七十六天)

    第七十六天(2018-10-19) [html] 在新窗口打开链接的方法是什么?那怎么设置全站链接都在新窗口打开?...

  • HTML:target=_blank

    _blank -- 在新窗口中打开链接_self -- 在当前窗体打开链接,此为默认值。_parent -- 在父...

  • 小知识

    web打开的方式: 1.在当前窗口打开链接 2.新窗口/标签页打开链接 3.弹出窗口打...

  • a标签

    新窗口打开 新窗口打开

  • FireFox下新窗口打开链接

    问题 在开发功能时,遇到a标签中target="_blank"仍然是在本页打开,而window.open(url)...

  • 让SELECT里的链接在新窗口打开代码

    让SELECT里的链接在新窗口打开代码 友情文字链接站点 百度 网易

  • 前端面试题专项练习30题

    1、如何在新窗口打开链接? target属性有5个值:①_self:在当前框架中打开链接② _blank:在全新的...

  • Selenium+Python句柄操作

    当我们打开浏览器,点击页面链接时,经常会遇到新的页面会在新窗口打开,而Selenium不会去自动识别新窗口,所以我...

  • base 标签

    base 标签可以设置整体链接的打开方式 四个链接均为在新窗口打开。注:target="_self"是在原窗口打开。

网友评论

      本文标题:WebView新窗口打开链接

      本文链接:https://www.haomeiwen.com/subject/wkdjixtx.html