如何解决编辑BrowserField的历史记录
| 我的应用程序中有一个BrowserField,效果很好。它拦截了NavigationRequests到我网站上指向外部站点的链接,并打开了一个新窗口以在常规浏览器中显示这些窗口,这也很好用。 我的问题是,如果用户单击链接说“ www.google.com”,则我的应用程序会在新的浏览器中打开该链接,同时还将其记录到BrowserHistory中。因此,如果他们单击远离Google的按钮,它们将返回我的应用程序,但是如果再次单击该按钮,BrowserHistory会将它们放回到与它们相同的页面上(因为从Google返回不会移回历史)我试图找到一种方法来编辑BrowserField \的BrowserHistory,但这似乎是不可能的。除了创建自己的类来记录浏览历史记录之外,我还能做些什么? 如果我在解释问题时做得不好,请不要犹豫。 谢谢解决方法
解决此问题的一种可能的方法是跟踪在当前NavigationRequest URL之前访问的最后一个内部URL。然后,您可以像已经检查的那样检查单击的链接是否是外部链接,以及是否调用此方法:
updateHistory(String url,boolean isRedirect)
外部链接之前的最后一个URL。以您的示例为例,这应该在单击外部链接之前用最后的内部URL覆盖\“ www.google.com \”。
这是一些伪代码/半Java来说明我的解决方案:
BrowserFieldHistory history = browserField.getHistory():
String lastInnerURL = \"\";
if navigationRequest is an outside link {
history.updateHistory(lastInnerURL,true);
// Handle loading of outer website
} else {
lastInnerURL = navigationRequest;
// Visit inner navigation request as normal
}
http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/browser/field2/BrowserFieldHistory.html#updateHistory(java.lang.String,boolean)
, 我遇到了类似但有点不同的问题。 html内容中的特殊链接(例如device:smth)用于打开条形码扫描器,注销等,我希望不要将其保存在BrowserFieldHistory中。我在WebWork源代码中找到了一个有趣的解决方法。您所需要做的就是在末尾抛出异常,如下所示:
public void handleNavigationRequest( BrowserFieldRequest request ) throws Exception {
if scheme equals to device {
// perform logout,open barcode scanner,etc
throw new Exception(); // this exception prevent saving history
} else {
// standard behavior
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。