Java的桌面库可以在新的浏览器选项卡或窗口中启动URL吗?

时间:2009-04-01 17:51:57

标签: java desktop uri

我有一个静态方法用于启动具有给定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();
        }
    }
}

或者,有更好的方法吗?

5 个答案:

答案 0 :(得分:2)

看看BrowserLaunch2。特别是this method,用于强制打开新窗口。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分: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下的默认浏览器。

Here is an example of accessing the Windows registry in Java.

You could also search Google for more information on finding default browser in the registry.

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

希望这有帮助!

答案 4 :(得分:0)

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

以下是我们在2006年向java.net forums询问的链接。

有人回复JDIC's WebBrowser