【问题标题】:How can I cause the browser to navigate to a given URL from a Java applet?如何使浏览器从 Java 小程序导航到给定的 URL?
【发布时间】:2010-10-14 06:00:38
【问题描述】:

我有一个 Java 小程序,它由一个类似向导的表单组成,包含三个步骤。在最后一步,用户可以单击“完成”按钮。我希望该按钮使网络浏览器导航到特定的 URL。

问题:有没有办法让浏览器导航到特定的 URL,这样它就可以在所有现代浏览器上运行?我的特定浏览器要求是 FF3+、IE7+、Safari 3+ 和 Opera 9+。我正在使用 Java 1.5。

【问题讨论】:

    标签: java cross-platform applet cross-browser


    【解决方案1】:

    从小程序中,您可以简单地获取小程序上下文并调用showDocument(url)

    这将从当前页面导航到指定的 URL:

    getAppletContext().showDocument(url);
    

    此外,您还可以传递target 参数。

    要访问相对 URL,您可以使用:

    URL url = new URL(getCodeBase().getProtocol(),
                              getCodeBase().getHost(),
                              getCodeBase().getPort(),
                              "/next.html");
    getAppletContext().showDocument(url);
    

    这些适用于自 Java 1.1 版以来的所有主流浏览器。

    【讨论】:

      【解决方案2】:

      您可以在 JavaScript 中启动向导,并让小程序在单击“完成”按钮时将执行流程返回给 JavaScript 调用者。使用 JavaScript 后,您可以通过表单发布或更改 window.location 属性导航到新位置。

      在最坏的情况下,您可以检查LiveConnect 的使用情况,但我会用一根 10 英尺长的杆子碰它。


      LiveConnect 更新

      原来的 LiveConnect 似乎在本质上仅限于在 Windows 上运行的浏览器,并且可能仅适用于 NN 和 IE。 Some of those bugs have been fixed recently,但浏览器兼容性仍将是一个问题。

      【讨论】:

        【解决方案3】:

        如果您使用的是 Java 6 及更高版本,请参阅Desktop API。这将驱动浏览器。但是我不知道小程序安全模型是否会干扰这个。

        除此之外,我成功地使用了BrowserLauncher2。类似的警告也适用。

        【讨论】:

          【解决方案4】:
          String googleURL = "https://www.google.com/";
          
          try {
             java.awt.Desktop.getDesktop().browse(java.net.URI.create(googleURL));    
          }
          catch(IOException ex) {    
              Logger.getLogger(UI.class.getName()).log(Level.SEVERE,null, ex);    
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-29
            • 2012-01-19
            • 1970-01-01
            • 2018-02-16
            相关资源
            最近更新 更多