我试图在输入区域实现光标焦点,IE给了我很多麻烦。我已经尝试了一些方法(将超时更改为大数字):
setTimeout(function() { document.getElementById('myInput').focus(); }, 10);
它不起作用。我注意到我在页面上也有一个小程序,当我删除小程序时,上面的工作。此外,如果我在focus()
触发器之前发出警报,它将起作用。
applet没有特别做任何事情(它实际上检索用户的MAC地址),并且最后一次调用外部JS函数将MAC地址发送到DOM。我已经尝试将焦点(超时和所有)放在JS函数的末尾,但这也不起作用。
可能有什么不对?事情在Firefox中运行良好,而不是在IE中。
当前设置:
//This is called from within the applet using a window.call
function everythingDone()
{
$("#someinput").focus();
//setTimeout(function() { document.getElementById('someInput').focus(); }, 1000);
};
$(function()
{
var applet = "<object classid='clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA' width='0' height='0'><param name='code' value='someapplet.class' /><param name='archive' value='/someapplet.jar' /></object>";
$("#appletarea").html(applet);
//setTimeout(function() { document.getElementById('someInput').focus(); }, 1000);
});
答案 0 :(得分:8)
我认为更简单的解决方法是使用applet / object / embed标记的initial_focus参数。
<applet ...>
<param name="initial_focus" value="false"/>
</applet>
答案 1 :(得分:2)
这是IE的Sun Java插件中一个臭名昭着的错误。你可以在这里找到完整的讨论 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4984794。 不幸的是,这个bug被关闭了,因为不可重现!在提出的解决方法中,以下对我有用:
Crookster
如果有人有兴趣,我相信我 找到了解决方法。
在你的applet start()方法中,添加 以下内容:
JPanel panel = new JPanel(); this.add(面板); panel.addFocusListener(新 FocusAdapter(){public void focusGained(FocusEvent e){JSObject win =(JSObject) JSObject.getWindow(本); win.eval( “onAppletLoad();”); }}; panel.requestFocusInWindow();
然后,在HTML代码中添加 以下功能:
function onAppletLoad(){ myField.focus(); // myField所在的位置 该领域获得关注! }
您必须导入以下内容 applet
import netscape.javascript。*; // JSObject类,用于获取HTML 页面
并将plugin.jar添加到您的类路径中。 你会在你的JRE中找到plugin.jar / jre / lib目录(1.4.x +)
虽然applet有一个JPanel,但是 将大小设置为0,0你将看不到 它
希望这有帮助
肖恩