3

我有一个静态方法用于启动具有给定 URL 的浏览器。当浏览器已经打开时,它将接管活动的浏览器窗口。

如果浏览器用于其他用途,例如数据输入,这将是一个问题。有没有办法在新的浏览器窗口(或选项卡)中打开 URL?

public static void openURL(String urlText)
{
    if (Desktop.isDesktopSupported())
    {
        URI uri = URI.create(urlText);
        try
        {
            Desktop.getDesktop().browse(uri);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

或者,有没有更好的方法来做到这一点?

4

5 回答 5

2

看看BrowserLaunch2。特别是这种强制打开新窗口的方法。

于 2009-04-01T20:39:02.773 回答
1

您可能需要在浏览器中进行配置,而不是在您的启动代码中。您可能能够找到一些启动标志来导致您想要的行为,但您将在此过程中将您的代码绑定到特定的浏览器。

于 2009-04-01T18:42:33.507 回答
1

您可以使用 Yose 方法来识别默认浏览器,然后使用以下命令:

firefox.exe -new-tab ie7 http://blogs.msdn.com/tonyschr/archive/2007/01/19/ie-automation-amp-tabs.aspx 歌剧-newpage

请注意,某些浏览器不支持选项卡,或者没有命令行参数来在选项卡中打开 url。在这种情况下,您可以使用 AHK 脚本引擎。

于 2009-04-02T08:20:41.900 回答
0

在 Windows 下,有一种方法可以找到默认浏览器是什么。您将不得不使用命令

REG QUERY HKCR\.html /ve

这将返回

! REG.EXE VERSION 3.0

HKEY_CLASSES_ROOT\.html
    <NO NAME>   REG_SZ  FirefoxHTML

然后您将使用相同的命令查询 FirefoxHTML(或返回的任何值),并将以下内容附加到键

REG QUERY HKCR\FirefoxHTML\shell\open\command /ve

这将返回

! REG.EXE VERSION 3.0

HKEY_CLASSES_ROOT\FirefoxHTML\shell\open\command
    <NO NAME>   REG_SZ  "C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1"

从这里,您可以解析返回的行以获取浏览器可执行文件的位置。

您可以使用 Java Runtime 类完成所有这些操作:

Runtime.getRuntime.exec(cmdString);

这需要大量自定义编码,但您基本上可以创建自己的 API 来访问 Windows 下的默认浏览器。

这是一个使用 Java 访问 Windows 注册表的示例。

您还可以在 Google 上搜索有关在注册表中查找默认浏览器的更多信息。

至于其他平台(Mac、Linux 等),我确信有一种特定的方法可以获取默认浏览器的路径。

希望这可以帮助!

于 2009-04-01T18:40:09.470 回答
0

听起来 java.awt.Desktop API 没有提供这种级别的功能。

这是我们在 2006 年找到的java.net 论坛的链接。

那里的回应提到了JDIC 的 WebBrowser

于 2009-04-01T22:18:11.397 回答