У меня ошибка с вызовом 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();
};
}
Есть одна странная особенность, когда я запускаю код в отладке в хроме, все работает нормально. Надеюсь на ваш совет.
Я не уверен, но, вероятно, когда вы вызываете метод requestFocus(), апплет еще не загружен. Вероятно, когда вы отлаживаете, вы останавливаете выполнение js, и вы уделяете достаточно времени апплетам, которые нужно загрузить. Возможно, вам нужен обратный вызов или какой-то механизм, чтобы знать, когда апплет готов.
Весь этот метод имеет запах "плохого кода".
deployJava.runApplet(attributes, parameters);
вызов должен быть в теле страницы и вызываться, как только будет написана страница.function onLoad()
однако, должна логически определяться в function onLoad()
документа.onLoad
апплет должен, по крайней мере, загружаться и даже может быть загружен в готовность к использованию. Обратите внимание, что событие onload
запускается при загрузке страницы, скриптов, стилей и изображений. Но это не касается загрузок, которые обрабатываются JVM (например, Jars апплета или его медиа-ресурсов).
setInterval()
которая проверяет состояние апплета каждую секунду.