Ошибка метода requestFocus () апплета Java при вызове в js

0

У меня ошибка с вызовом requestFocus() в JS.

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

Это мой код JS между тегами <head>

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();
    };
}

Есть одна странная особенность, когда я запускаю код в отладке в хроме, все работает нормально. Надеюсь на ваш совет.

Теги:
applet
onload

2 ответа

1
Лучший ответ

Я не уверен, но, вероятно, когда вы вызываете метод requestFocus(), апплет еще не загружен. Вероятно, когда вы отлаживаете, вы останавливаете выполнение js, и вы уделяете достаточно времени апплетам, которые нужно загрузить. Возможно, вам нужен обратный вызов или какой-то механизм, чтобы знать, когда апплет готов.

  • 0
    «... нужен обратный вызов или какой-то механизм, чтобы узнать, когда апплет готов». Да, точно. +1
  • 0
    Решение найдено. Я использую функцию setInterval() которая проверяет состояние апплета каждую секунду.
0

Весь этот метод имеет запах "плохого кода".

  1. deployJava.runApplet(attributes, parameters); вызов должен быть в теле страницы и вызываться, как только будет написана страница.
  2. function onLoad() однако, должна логически определяться в function onLoad() документа.
  3. К моменту вызова onLoad апплет должен, по крайней мере, загружаться и даже может быть загружен в готовность к использованию. Обратите внимание, что событие onload запускается при загрузке страницы, скриптов, стилей и изображений. Но это не касается загрузок, которые обрабатываются JVM (например, Jars апплета или его медиа-ресурсов).
  • 0
    Проблема заключается в том, что каждый раз, когда мы запускаем html-страницу, содержащую апплет, плагин Java отображает диалоговое окно для подтверждения запуска апплета, но параллельно с этой html-страницей продолжается загрузка до тех пор, пока пользователь не даст разрешение, апплет не будет загрузка и ссылка на апплет будут нулевыми.
  • 0
    Все больше причин для опроса апплета, как предложено в первом ответе !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню