请教:
如何用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?请附上实现功能代码,定重谢。

解决方案 »

  1.   

    用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>
      

  2.   

    如果楼主想要打开指定网页,又要关闭的话,最好不要用desktop类,因为它的browse方法打开后不返回任何浏览器相关的信息建议打开指定网页这样写
    windowXP下Process p = Runtime.getRuntime().exec("explorer http:\\www.sina.com.cn");这样得到的Process实例p,可以调用destroy()方法杀掉进程.
      

  3.   

    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();
    }
    }
      

  4.   

    打开浏览器之类的用命令行不就可以了么?
    用getRunTime()调用run32dll 具体代码——Runtime rt = Runtime.getRuntime(); 
    try { rt.exec("rundll32   url.dll,FileProtocolHandler   " + "http://www.163.com"); } catch (IOException e) { }
      

  5.   

    不好意思,您是要关闭浏览器,先试图寻找命令行解决方案,在使用RunTime来调用
      

  6.   

    添加window关闭事件,获取系统默认的浏览器,打开指定的url就可以了
      

  7.   

    不能,看看API文档
    public void browse(URI uri)
                throws IOException    启动默认浏览器来显示 URI。如果默认浏览器无法处理指定的 URI,则调用用于处理指定类型的 URI 的注册应用程序。正如 URI 类定义的一样,根据协议和 URI 的路径确定应用程序。    如果调用线程没有必需的权限,且它是从 applet 中调用的,则使用 AppletContext.showDocument()。类似地,如果调用线程没有必需的权限,且它是从 Java Web Started 应用程序中调用的,则使用 BasicService.showDocument()。 没有任何返回值,也就是说,一旦打开了,就失去控制了。OVER!
      

  8.   

    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>
      

  9.   

    从理论上是可行的,浏览器应该提供了API编程接口不然类似Selenium这样的自动WEB测试框架无法实现
      

  10.   


    我在API中没有找到browse这个
    PS:lz的问题用脚本很容易实现
    直接关闭窗口就行
      

  11.   

    楼主是说的这个么??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
        浏览器代理设置的配置