shouldOverrideUrlLoading()没有从iframe调用外部链接

时间:2015-09-04 15:35:54

标签: android android-webview

尽管在SO中讨论了shouldOverrideUrlLoading()的问题(我可能已经阅读了大部分内容),但我仍然没有找到解决方案,看起来像我这样的通用问题,我相信已经解决了。

问题:如何在外部链接的shouldOverrideUrlLoading()中停止,例如: " http://www.example.com",用于我使用webView.loadDataWithBaseURL()加载的页面,其中baseUrl是" file:///..."?

触摸(单击)外部链接时,不会调用shouldOverrideUrlLoading()的覆盖方法。 Here它说"无法根据基本网址解析的网址会被丢弃(您不会获得任何回调,无论是OverOverlUrlLoading还是onPageStarted)。" Android开发者网站说here"如果您通过调用... loadDataWithBaseURL()加载页面,那么您将收到页面上此类链接的shouldOverrideUrlLoading()回调 &#34。 这是我的代码:

public void loadEpub(final EpubInfo epubInfo)
{
    post(new Runnable()
    {
        @Override
        public void run()
        {
            epubBaseUrl = "file://" + epubInfo.path;
            if (!epubBaseUrl.endsWith("/"))
                epubBaseUrl += "/";

            String path = epubBaseUrl + epubInfo.baseUrl;
            String page = generatePage(epubInfo);
            EpubWebView.super.loadDataWithBaseURL(path, page, "text/html", "UTF-8", null);
        }
    });
}

我的baseUrl(路径)是" file:///storage/sdcard0/Android/data/..."。

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

精确定位问题,并找到了解决方案。 如果您的网页在2中运行,则点击外部(http://www..。)链接不会触发iframe!除非你添加shouldOverrideUrlLoading() 所以至少有两种可能的解决方案: 1)如果可以的话,在没有target="_top"的情况下运行 2)如果您添加到每个iframehreftarget="_top"将被触发。

我去寻求解决方案2)。以下shouldOverrideUrlLoading()代码将target属性添加到每个链接。

JavaScript