2012-06-01 12 views
8

¿Hay alguna manera de llevar una ventana del navegador al primer plano/foco desde una ventana de alerta de applet de Java? Tengo un applet en una página html que muestra una alerta con un botón. Cuando se presiona el botón, quiero que la ventana original del navegador aparezca donde esté (minimizada, cubierta, etc.) Creo que hay una forma de conectar Java a Javascript para hacer esto, pero no sé Javascript.Java/Javascript trae la ventana del navegador que contiene el applet al primer plano

Aquí es el código del applet de Java:

/** An applet that posts an alert and waits for the alert button to be pressed. 
* Version 1 uses http://java.sun.com/products/plugin/1.3/docs/jsobject.html 
*/ 

import netscape.javascript.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Bounce extends JApplet implements ActionListener { 
    JDialog dialog; 
    JSObject window; 
    String message; 

    public void paint(Graphics g) { 
     g.clearRect(0,0, 400,40); 
     g.drawString(message,40,20); 
    } 

    public void init() { 
     JFrame frame= null; 
     dialog= new JDialog(frame, "Bounce App"); 

     JButton setupButton= new JButton("Bounce it back!"); 
     setupButton.addActionListener(this); 

     JPanel contentPane= new JPanel(); 
     contentPane.add(setupButton); 
     contentPane.setOpaque(true); 
     dialog.setContentPane(contentPane); 

     dialog.setSize(new Dimension(400, 110)); 
     dialog.setVisible(true); 

     message= "This applet posts an alert panel."; 
     window= JSObject.getWindow(this); 
//  String[] params= { "An alert message" }; 
//  window.call("alert", params); 
//  window.eval("alert('Important Alert!')"); 
    } 

    public void actionPerformed(ActionEvent e) { 
     dialog.setVisible(false); 
     dialog.dispose(); 
     System.err.println("button has been pushed; focus set"); 
     message= "Somebody pushed my bounce-back button."; 
     JSObject document= (JSObject)window.getMember("document"); 
     document.setMember("bgColor", "orange"); 
     window.eval("focus()"); 
     repaint(); 
    } 

} 

Y aquí está el código HTML:

<HTML> 
    <HEAD><TITLE>The Reappearing Page</TITLE></HEAD> 
    <body bgcolor="#f0ffc0"> 

    <H2>Make this page reappear</H2> 
    This page will start an applet (white box below) that sets up an alert. 
    Before you respond to the alert, hide the window you are reading right now, 
    using one of these methods:<ul> 
    <li> cover it with another window, </li> 
    <li> Hide it using a menu item, </li> 
    <li> Minimize it, or </li> 
    <li> move it to another workspace or desktop. </li> 
    </ul> 
    Then click on the button in the alert. 

    <P> 
    <EMBED type="application/x-java-applet;version=1.3" width="400" height="40" 
     align="baseline" code="Bounce.class" MAYSCRIPT=true 
     pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"> 
    <NOEMBED> 
     No JDK 1.3 support for APPLET!! 
    </NOEMBED> 
    </EMBED> 

    <P>What is supposed to happen is that the main window 
    will emerge from wherever you hid it and reappear. 
    Since I don't know how to do this, it is your challenge to actually make it happen. 
    We need to be able to achieve this magic from any of the situations listed above.</P> 

    </body> 

Respuesta

1

(cambió de comentario de responder para que pueda publicar un fragmento de código decente para ti) No hay una manera confiable de "poner en primer plano" una ventana usando JavaScript, a menos que sea una ventana que hayas creado desde una página principal, por razones obvias ("¡Felicitaciones! Eres nuestro cu. Stomer, ¡ganas un premio! "). Si ha cargado el applet de la ventana como una ventana emergente usando window.open desde otra ventana, se podría tratar de usar window.focus:

var w = window.open(appletPageUrl); 
w.focus() 

imagino bloqueo de ventanas emergentes no aprecian este tipo de cosas, por lo que tu caso es distinto. En una nota personal, sugiero que piense si un usuario quiere saber sobre su alerta si ha elegido ocultar/minimizar su aplicación.

Cuestiones relacionadas