尽管在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/..."。
非常感谢提前。
答案 0 :(得分:1)
精确定位问题,并找到了解决方案。
如果您的网页在2
中运行,则点击外部(http://www..。)链接不会触发iframe
!除非你添加shouldOverrideUrlLoading()
所以至少有两种可能的解决方案:
1)如果可以的话,在没有target="_top"
的情况下运行
2)如果您添加到每个iframe
,href
,target="_top"
将被触发。
我去寻求解决方案2)。以下shouldOverrideUrlLoading()
代码将target属性添加到每个链接。
JavaScript