【问题标题】:Editing a BrowserField's History编辑 BrowserField 的历史
【发布时间】:2011-06-14 16:54:37
【问题描述】:

我的应用中有一个 BrowserField,效果很好。它拦截我网站上指向外部站点的链接的 NavigationRequests,并打开一个新窗口以在常规浏览器中显示这些链接,这也很有效。

我遇到的问题是,如果用户单击链接说“www.google.com”,我的应用程序会在新浏览器中打开该链接,但也会将其记录到 BrowserHistory。因此,如果他们点击返回,远离谷歌,他们会回到我的应用程序,但如果他们再次回击,BrowserHistory 会将他们放在他们所在的同一页面上(因为从谷歌返回不会在history) 我试图找到一种方法来编辑 BrowserField 的 BrowserHistory,但这似乎是不可能的。除了创建我自己的类来记录浏览历史,我能做些什么吗?

如果我没有很好地解释问题,请不要犹豫澄清。 谢谢

【问题讨论】:

    标签: blackberry browser-history browserfield


    【解决方案1】:

    此问题的一种可能解决方案是跟踪在当前 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)

    【讨论】:

    • 我最终做到了这一点。我创建了自己的名为 CustomBrowsingHistory 的类,它本质上只是记录了我曾经做过的页面,但被编程为忽略特定情况。不过还是谢谢。
    【解决方案2】:

    我有一个类似但有点不同的问题。 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
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      相关资源
      最近更新 更多