Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Applet automatisch den Focus geben, wenn Seite geladen ?
Hi.
Ich finde gerade keine Möglichkeit, dass mein Applet direkt wenn die HTML-Seite fertig geladen ist den Focus (für z.B. die Tasteneingabe) erhält. Läßt sich das irgendwie ggf. von außen per JavaScript oder so erzwingen ?
Derzeit muss man immer erst einmal ins Applet klicken (FireFox + IE).
Man muss trotzdem noch jedes Mal, wenn die Seite geladen ist, erst einmal ins Applet klicken, um diesem den Fokus zu geben. Vielleicht ist das eine "Sicherheitsmaßnahme", oder eher "Sicherheitsschikane" der Browser ?
Gut wäre auch sowas wier JavaScript "document.Appletname.focus()", aber sowas scheint es ebenfalls nicht zu geben.
Jawoll! Ich habe eine Lösung (aus 2 Teilen) gefunden!
1) Man füge requestFocus() an das Ende innerhalb der >>paint() - Methode<<.
Es scheint so, als wird nach dem Aufruf von init() und start() dem Applet der Fokus nochmal entrissen, so dass dort requestFocus() nix bringt, aber wenn dann abschließend die paint()-Methode aufgerufen wird, nicht mehr. In einer leeren Internetseite klappt das nun wunderbar mit IE und FireFox. Allerdings kann es natürlich durchaus sein, dass z.B. durch ein langsames Laden von anderen Bildern in der Seite oder ähnliches der Focus nachträglich wieder entrissen wird. Für diesen Fall greift dann 2:
2) Man baue den HTML-source z.B. nach folgendem Schema:
document.myApp.requestFocus(); ruft die Funktion requestFocus() des Applets auf. Das ganze nennt sich glaube ich 'LiveWire', die Verknüpfung von JavaScript mit Applets (man kann Methoden auch Parameter übergeben, und Rückgabewerte erhalten) Klappt mit FireFox und IE.
Wird document.myApp.requestFocus() aber nur einmal bei 'onLoad' des <body> aufgerufen, funktioniert es nicht, irgendwas entreisst den Focus wieder. Aber mit ein paar Timeouts kann man sicherstellen, dass abschließend das Applet den Focus erhält. (Der nochmalige Aufruf von siteLoaded() ist nur nochmal zur nummer sicher).
Ebenso könnte man natürlich auch setIntervall() nutzen, aber dann könnte man keinem anderen Element in dieser Seite mehr den Fokus geben, da er dann immer wieder an das Applet geholt wird.
Auch könnte man vielleicht das Applet zusammen mit einem setIntervall in ein seperates Frame packen, welches nur das Applet enthält, denn sobald ein anderer Frame den Fokus hat, wird wahrscheinlich setIntervall aus dem Applet-Frame diesen nicht an sich reißen können...
=> so läßt sich also was basteln. Vielleicht reicht auch für die meisten Zwecke lediglich Punkt 1) ? Man müßte mal noch testen, ob durch langsames Nachladen von Bildern oder anderen Frameinhalten der Fokus dem Applet wieder geraubt wird.
Kennst Du oder jemand anderes noch eine andere Lösung ?