我有一个带有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()");
}
}
答案 0 :(得分:2)
// JSObject.getWindow(this).eval("focusMe()");
frame.requestFocuse();
通过改变这些应该是单词。
答案 1 :(得分:0)
我们应该鼓励Oracle更多地支持Web浏览器中的applet。毕竟,他们正在努力推动JavaFX技术,即applet技术。就焦点问题而言,这似乎很复杂。如何获得基础知识?请参考Applet steals Focus作为开始。
答案 2 :(得分:-1)