我有一个静态方法用于启动具有给定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();
}
}
}
或者,有更好的方法吗?
答案 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)