在Applet-Javascript交互中关注行为

时间:2009-12-10 20:48:22

标签: java javascript applet cross-browser

我有一个带有applet的网页,可以打开一个弹出窗口并进行Javascript调用。当该Javascript调用导致对HTML输入进行focus()调用时,这会导致浏览器窗口在applet窗口前推送自己。但仅限于某些浏览器,即MSIE。在Firefox上,applet窗口仍然位于顶部。如何在MSIE中保持这种行为一致?请注意,使用旧的Microsoft VM for Java也可以实现所需的(前面的applet窗口)结果。

HTML code:

<html>
    <head>
        <script type="text/javascript">
            function focusMe() {
                document.getElementById('mytext').focus();
            }
        </script>
    </head>
    <body>
        <applet id="myapplet" mayscript code="Popup.class" ></applet>
        <form>
            <input type="text" id="mytext">
            <input type="button" onclick="document.getElementById('myapplet').showPopup()" value="click">
        </form> 
    </body>
</html>

Java代码:

public class Popup extends Applet {
    Frame frame;
    public void start() {
        frame = new Frame("Test Frame");
        frame.setLayout(new BorderLayout());
        Button button = new Button("Push Me");
        frame.add("Center", button);
        button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                frame.setVisible(false);
            }
        });
        frame.pack();
    }
    public void showPopup() {
        frame.setVisible(true);
        JSObject.getWindow(this).eval("focusMe()");
    }
}

3 个答案:

答案 0 :(得分:2)

// JSObject.getWindow(this).eval("focusMe()");
frame.requestFocuse();

通过改变这些应该是单词。

答案 1 :(得分:0)

我们应该鼓励Oracle更多地支持Web浏览器中的applet。毕竟,他们正在努力推动JavaFX技术,即applet技术。就焦点问题而言,这似乎很复杂。如何获得基础知识?请参考Applet steals Focus作为开始。

答案 2 :(得分:-1)

真正的问题是你为什么使用applet?自从我完成Java以来​​已经有一段时间了,但除非您从示例中删除了大量代码,否则看起来您只是在做一个简单的对话框。 如果是这种情况,可以通过任意数量的JavaScript库轻松廉价地完成此操作,例如DojojQuery