2010-09-04 5 views
4

J'ai regardé comment vous pourriez utiliser Javascript pour diriger le focus vers un film Flash. Je l'ai vu discuté sur Stack Overflow et d'autres sites et il semble que vous ne pouvez pas le faire de manière fiable, sauf dans Internet Explorer. J'appelle la méthode .focus() sur un objet Flash via Javascript.Problème de mise au point Javascript/Flash sur différents navigateurs

Il fonctionne en fait dans Internet Explorer, mais je n'aime pas son comportement sur Firefox ou d'autres navigateurs. Fondamentalement, j'ai un nom d'utilisateur/mot de passe de connexion à l'intérieur de mon film Flash, et je veux le mettre au point lorsque le film Flash se charge, de sorte que vous pouvez commencer à taper votre nom d'utilisateur immédiatement, sans avoir à cliquer sur le champ. Le problème avec Firefox est que non seulement il ne définit pas le focus, vous pouvez VOIR un curseur clignotant à l'intérieur du champ dans Flash, ce qui indique vraiment que le champ a le focus. Cependant, vous devez toujours cliquer.

Ceci est contre-productif sur Firefox. Je préfère ne même pas essayer de mettre l'accent si c'est le comportement. Je pourrais bien sûr vérifier quel navigateur est utilisé et déterminer si même appeler .focus(), mais cette fonctionnalité peut changer dans les versions ultérieures de Firefox. J'aimerais avoir une meilleure solution, qui:

  1. Rappelez-vous la mise au point en cours avant que le film Flash est dynamiquement ajouté à la page (ce qui est la façon dont je le fais, je ne peux pas afficher le film dans le cadre du chargement initial de la page).
  2. Essayez de définir le focus sur le film Flash.
  3. Vérifiez si la mise au point a été correctement définie, donc je peux m'attendre à ce que le film Flash reçoive réellement des frappes sans un clic supplémentaire.
  4. Si la mise au point n'était pas définie, revenez à ce qui a été focalisé avant le chargement du film Flash.

Je ne sais pas comment (ou si) cela peut être fait mais j'aimerais le savoir. Je pense que document.activeElement peut être utile, mais je n'ai pas pu aller très loin avec ça. Merci pour toute aide!

Répondre

1

Essayez quelque chose comme ceci:

private function setInitialFocus():void { 
    myInput.setFocus(); 
    ExternalInterface.call("function() { var app = document.getElementById('myApp'); app.tabIndex = 0; app.focus(); }"); 
} 

Vous également définir la tabIndex à 0 sur votre contrôle d'entrée.