2012-06-01 11 views
8

C'è un modo per spostare una finestra del browser in primo piano/messa a fuoco da una finestra di avviso di applet Java? Ho un'applet in una pagina html che fa apparire un avviso con un pulsante al suo interno. Quando si preme il pulsante, voglio che la finestra del browser originale si apra da qualsiasi parte (minimizzata, coperta, ecc.) Credo che ci sia un modo per connettere Java a Javascript per farlo, ma non conosco Javascript.Java/Javascript porta la finestra del browser contenente l'applet in primo piano

Ecco il codice di applet 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(); 
    } 

} 

E qui è il codice 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> 

risposta

1

(Modificato dal commento di rispondere in modo da poter inviare un frammento di codice decente per te) Non esiste un modo affidabile per "foreground" una finestra utilizzando JavaScript, a meno che non si tratti di una finestra creata da una pagina madre, per ovvi motivi ("Congratulazioni !! Sei il nostro millesimo cu ancora, vinci un premio !!!!! "). Se hai caricato la finestra applet come popup utilizzando window.open da un'altra finestra, si potrebbe provare a utilizzare window.focus:

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

immagino blocco dei popup non apprezzano questo genere di cose, in modo YMMV. A titolo personale, ti suggerisco di pensare se un utente vuole sapere del tuo avviso se ha scelto di nascondere/minimizzare la tua app.

Problemi correlati