Applet阻止了IE的焦点

时间:2010-05-03 19:50:19

标签: jquery internet-explorer applet focus

我试图在输入区域实现光标焦点,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);
});

2 个答案:

答案 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你将看不到   它

     

希望这有帮助

     

肖恩