如何用java程序调用浏览器执行关闭tab操作

hjy273 2009-06-25 06:05:52
请教:
如何用java程序调用浏览器执行关闭tab操作?

有打开浏览器的代码,但不知道怎样关闭!以下是调用浏览器打开指定的url,
//String webSite="http://www.google.cn";
private void runBroswer(String webSite) {
try {
Desktop desktop = Desktop.getDesktop();
if (desktop.isDesktopSupported()
&& desktop.isSupported(Desktop.Action.BROWSE)) {
URI uri = new URI(webSite);
desktop.browse(uri);
}
} catch (IOException ex) {
ex.printStackTrace();
} catch (URISyntaxException ex) {
ex.printStackTrace();
}
}

请问如何用java程序关闭之前打开的url?请附上实现功能代码,定重谢。
...全文
888 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
qthl004 2012-08-01
  • 打赏
  • 举报
回复
楼主是说的这个么??



JxBrowser能在Windows、Linux、Mac OS X (Intel and PPC-based)平台上将Mozilla Firefox浏览器完美地整合到Java AWT/Swing应用程序里。该库程序使用Gecko设计引擎来转换HTML文档。因而保证了它能与许多Internet标准(如HTML 4、CSS、XML、JavaScript以及其它)兼容。

主要功能

用来将HTML浏览程序内置到AWT/Swing用户界面上的可视浏览器控件
使用Gecko 1.9/Firefox 3代码库
标准化的导航方法,如直接导航()、后退()、前进()以及停止()
能执行JavaScript代码。支持字符串返回值。
不同浏览器事件的标准Java监听对象
通过W3C DOM API访问浏览器的DOM(org. w3c. dom.*包)
控制台服务使你能收到关于脚本失败与其它页面问题的通知
能创建上下文独立的Java菜单代替标准的浏览器菜单
能下载文件
拥有为不同内容类型提供用户定义行为的API
追踪不同步操作的API
浏览器代理设置的配置


zmbaby112 2009-07-07
  • 打赏
  • 举报
回复
学习....
zhoujingxian 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 java2000_net 的回复:]
不能,看看API文档
public void browse(URI uri)
throws IOException

启动默认浏览器来显示 URI。如果默认浏览器无法处理指定的 URI,则调用用于处理指定类型的 URI 的注册应用程序。正如 URI 类定义的一样,根据协议和 URI 的路径确定应用程序。

如果调用线程没有必需的权限,且它是从 applet 中调用的,则使用 AppletContext.showDocument()。类似地,如果调用线程没有必需的权限,且它是从 J…
[/Quote]

我在API中没有找到browse这个


PS:lz的问题用脚本很容易实现
直接关闭窗口就行
hbwhwang 2009-07-03
  • 打赏
  • 举报
回复
从理论上是可行的,浏览器应该提供了API编程接口

不然类似Selenium这样的自动WEB测试框架无法实现
zhao_jindong 2009-07-02
  • 打赏
  • 举报
回复
路过,学习!
hjy273 2009-07-02
  • 打赏
  • 举报
回复
13楼说的很正解,谢谢回复。
如果不能实现,我新追加一个问题:java1.6新增了调用js的功能,由于js是可以控制打开的url并将其关闭,
那么能否用java控制js将其打开的url关闭?如能实现请把代码贴出来分享一下。谢谢。
附js调用传入的url打开并关闭代码:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>打开指定URL的窗口并在一定的时间内自动关闭</title>
<script language="javascript">

//这里声明一个根据传来的地址打开新窗口的函数
var Wind;
function newWindow(url){
Wind=window.open(url);
window.setTimeout("closeWind()",3000);
}

//关闭打开的新窗口,否则提示
function closeWind(){
if(Wind) {//如果Wind对象存在
Wind.close();//调用关闭方法
Wind=null//并把值赋成null
}else{//否则,也就是
alert("去google搜索一下,再找找看能不能关闭!");
}
}
</script>
</head>
<body>
<p>
<input type="submit" name="tijiao" value="在浏览器中打开传入的页面,过3秒自动关闭" onclick="newWindow('http://www.google.cn')" />
</p>
</body>
</html>
zhouxingyu896 2009-07-02
  • 打赏
  • 举报
回复
学习
学习
老紫竹 2009-07-02
  • 打赏
  • 举报
回复
不能,看看API文档
public void browse(URI uri)
throws IOException

启动默认浏览器来显示 URI。如果默认浏览器无法处理指定的 URI,则调用用于处理指定类型的 URI 的注册应用程序。正如 URI 类定义的一样,根据协议和 URI 的路径确定应用程序。

如果调用线程没有必需的权限,且它是从 applet 中调用的,则使用 AppletContext.showDocument()。类似地,如果调用线程没有必需的权限,且它是从 Java Web Started 应用程序中调用的,则使用 BasicService.showDocument()。

没有任何返回值,也就是说,一旦打开了,就失去控制了。

OVER!
hjy273 2009-07-01
  • 打赏
  • 举报
回复
自己顶一下,期待好心人来帮忙。
baetg 2009-07-01
  • 打赏
  • 举报
回复
围观
hjy273 2009-06-27
  • 打赏
  • 举报
回复
期待有人帮忙解决,可再追加分。
Monkey_D_Luffy 2009-06-27
  • 打赏
  • 举报
回复
不太懂这个,纯帮顶
zuoguodang 2009-06-27
  • 打赏
  • 举报
回复
添加window关闭事件,获取系统默认的浏览器,打开指定的url就可以了
hjy273 2009-06-26
  • 打赏
  • 举报
回复
4楼的方法之前我也试过但是p.destroy()方法不起任何作用。不能关闭掉之前打开的页面。

##以下是4楼说的方法,我也贴出来大家交流一下。
/**
* J2SE 5及之前可使用以下代码<br>
*/
private void openURL(String url) {
String osName = System.getProperty("os.name");
System.out.println("###osName:" + osName);
// System.gc();
Process p = null;
int exitCode = 1;

try {
if (osName.startsWith("Mac")) {// Mac OS
Class fileMgr = Class.forName("com.apple.eio.FileManager");
Method openURL = fileMgr.getDeclaredMethod("openURL",
new Class[] { String.class });
openURL.invoke(null, new Object[] { url });
} else if (osName.startsWith("Windows")) {// Windows
p = Runtime.getRuntime().exec(
"rundll32 url.dll,FileProtocolHandler " + url);

// System.out.println("###p:" + p);
// System.out.println("###p.hashCode():" + p.hashCode());

exitCode = p.waitFor();
System.out.println("###exitCode:" + exitCode);
} else { // Unix or Linux
String[] browsers = { "firefox", "opera", "konqueror",
"epiphany", "mozilla", "netscape" };
String browser = null;
for (int count = 0; count < browsers.length && browser == null; count++) {
if (Runtime.getRuntime().exec(
new String[] { "which", browsers[count] })
.waitFor() == 0) {
browser = browsers[count];
}
}
if (browser == null) {
throw new Exception("Could not find web browser");
} else {
Runtime.getRuntime().exec(new String[] { browser, url });
}
}
Thread.sleep(2000);
p.destroy();
} catch (Exception ex) {
ex.printStackTrace();
}
}
Ant 2009-06-26
  • 打赏
  • 举报
回复
不好意思,您是要关闭浏览器,先试图寻找命令行解决方案,在使用RunTime来调用
Ant 2009-06-26
  • 打赏
  • 举报
回复
打开浏览器之类的用命令行不就可以了么?
用getRunTime()调用run32dll

具体代码——

Runtime rt = Runtime.getRuntime();
try {

rt.exec("rundll32 url.dll,FileProtocolHandler " + "http://www.163.com");

} catch (IOException e) {

}
myairland 2009-06-25
  • 打赏
  • 举报
回复
如果楼主想要打开指定网页,又要关闭的话,最好不要用desktop类,因为它的browse方法打开后不返回任何浏览器相关的信息

建议打开指定网页这样写
windowXP下

Process p = Runtime.getRuntime().exec("explorer http:\\www.sina.com.cn");

这样得到的Process实例p,可以调用destroy()方法杀掉进程.
bean 2009-06-25
  • 打赏
  • 举报
回复
帮顶
wibnmo 2009-06-25
  • 打赏
  • 举报
回复
顶下,暂时还不知道。
xnjnmn 2009-06-25
  • 打赏
  • 举报
回复
用JS很简单
window.close()


When a function fired by an event on any object calls the close method, the window.close method is implied.

HideExample

<SCRIPT LANGUAGE="JScript">
function foo() {
close();}
</SCRIPT>
<BODY onclick="foo();">
Click this page and window.close() is called.
</BODY>

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧