目前我有一个带网址的网站,例如。说:http://mydomain/index.jsp我已经在firefox浏览器中打开了网站&我认为我的默认浏览器是Google Chrome。
现在在java中,我需要使用当前正在运行的浏览器(我的网站打开的firefox)打开一个新的URL。当我尝试使用时:
Desktop desktop = java.awt.Desktop.getDesktop();
URI uri = new java.net.URI(my_new-uRL);
desktop.browse(uri);
新的网址是以chrome格式打开的(因为它是我的默认浏览器)。我不需要这样。由于我的所有会话都在firefox中有效,我需要我的代码用相同的firefox浏览器打开新的url。我怎么能这样做?
感谢。
答案 0 :(得分:2)
似乎唯一的方法是运行以URL为参数启动Firefox的命令。运行命令最简单的方法是使用Runtime.exec()方法之一:
String[] args = new String[] { "full/path/to/firefox.exe or linux binary", "your-new-url" };
Runtime.getRuntime().exec( args );
(有关exec()重载变体的更多信息,请参阅API文档。还要检查firefox的cmd参数的格式,我不确定)
该方法的一个明显缺点是使用Firefox的硬编码路径。可能在你的情况下不是问题。
<强>更新强>
行。换句话说,首先它需要以某种方式加载当前运行的应用程序的列表。坦率地说,我不认为Java很容易实现。这取决于操作系统。作为第一个想法,在Linux中,您可以运行类似“top”或“ps”的内容并分析输出以查看正在运行的应用程序。在Windows中,它很可能需要调用使用Win API执行任务的本机代码(C / C ++)(顺便说一下,由于安全原因,它可能会受到限制)。
答案 1 :(得分:1)
以下是便于所请求功能的应用程序的URL。希望这会有所帮助。
http://browserlaunch2.sourceforge.net/docs.shtml#defbrowserfromsysprop
答案 2 :(得分:1)
我知道这是一个相当古老的话题,但在我的工作中遇到了这个要求,我想我会分享解决方案。
首先,您需要确定用户正在使用的操作系统和浏览器。 对于您可以使用的操作系统:
String osName = System.getProperty("os.name");
String osVersion = System.getProperty("os.version");
为了找到浏览器,这里有一个很好的解释: http://www.rgagnon.com/javadetails/java-detect-browser-type-from-an-applet.html
我做的是在我的java代码中添加:
String browser = (String)win.eval("getUserAgent();")
并在部署applet的html中:
<head>
<script>
function getUserAgent() {
return navigator.userAgent;
}
</script>
到头部,
<applet ... MAYSCRIPT height=100
applet标签中的,高度之前。 (我还将plugin.jar添加到了类路径中)
现在你只需要使用一些if来确定操作系统和浏览器并进行处理。 例如对于linux和firefox:
String[] args = new String[] { "firefox", "http://www.google.com" };
Runtime.getRuntime().exec( args );
用于windows和firefox:
String[] args = new String[] { "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe", "http://www.google.com" };
Runtime.getRuntime().exec( args );
你必须为IE做这件事(不再支持chrome java applets) 还要处理Windows中路径的异常......