2010-01-07 5 views
0

Ext.getBody().focus() ne semble pas fonctionner correctement dans IE6. Lorsqu'un utilisateur accède à un nouvel onglet ExtJS, je dois m'assurer qu'il ne peut plus taper dans une instance CKEditor (cachée après avoir navigué vers un nouvel onglet) dans laquelle il aurait pu taper. Le code suivant fonctionne dans FF, mais pas IE6.Ext.getBody(). Focus() ne fonctionne pas dans IE6

for(var instanceName in CKEDITOR.instances) { 
    CKEDITOR.instances[instanceName].focusManager.forceBlur(); // also 
                   // not working 
                   // in IE6 
} 
Ext.getBody().focus(); 

Une suggestion?

Répondre

1

J'ai utilisé cette solution de contournement; J'ai créé un champ de saisie avec une hauteur zéro et une largeur nulle et déplacez le focus sur ce champ pour rendre flou un champ/une instance CKEditor.

1

Je crois que tous les principaux navigateurs, y compris IE 6, supportent la propriété document.activeElement. Si je comprends bien, vous devez supprimer le focus de l'élément de formulaire actif lorsque l'utilisateur clique sur un onglet? En supposant que vous avez accès à une sorte d'événement lorsque l'onglet est cliqué, essayez ceci:

if(document.activeElement) { 
    //Call blur() to remove focus from the active (focused) element 
    document.activeElement.blur(); 
} 

Si vous voulez désactiver toutes les entrées à ce champ que vous voulez donner également la propriété « désactivé ».

+0

Merci pour la réponse. Cela ne fonctionne pas non plus - peut-être parce que le focus "actuel" est situé dans un iFrame. – Upperstage

+0

Je crois que ça marcherait encore, si c'est dans un iframe, il suffit d'aller à * c'est l'objet document: 'window.frames ['votre_frame']. Document.activeElement' –

Questions connexes