在js中调用时,java applet requestFocus()方法错误

时间:2014-02-17 07:41:07

标签: java javascript html applet onload

我在JS中调用requestFocus()方法时遇到错误。

Uncaught TypeError: Object #<HTMLAppletElement> has no method 'requestFocus'

这是<head>代码

之间的JS代码
function onLoad() {
    var attributes = {
        'id': 'Client',
        'archive': 'client.jar',
        'code': 'org.kuzy.client.ui.Applet.class',
        'width': '100%',
        'height': '100%'
    };

    var parameters = {
        'scriptable': 'true'
    };

    deployJava.runApplet(attributes, parameters);

    window.onfocus = function() {
        document.getElementById("Client").requestFocus();
    };
}

有一个奇怪的功能,当我在chrome中运行调试代码时,一切正常。 我希望你的建议。

2 个答案:

答案 0 :(得分:1)

我不确定,但可能在您调用方法时,requestFocus()applet尚未加载。可能在你正在调试时,你正在停止执行js,并且你有足够的时间来加载applet。因此,您可能需要回调或某种机制才能知道applet何时准备就绪。

答案 1 :(得分:0)

这整个方法都有一个“坏代码”气味。

  1. deployJava.runApplet(attributes, parameters);调用应位于页面正文中,并在编写页面后立即调用。
  2. function onLoad()虽然在逻辑上应该在文档头中定义。
  3. onLoad调用时,applet至少应 加载 ,甚至可以加载以备使用。请注意,下载页面,脚本,样式和图像时会触发onload事件。但涵盖由JVM处理的下载(例如applet的Jars或其媒体资源)。