7
votes

Impossible de concentrer une entrée à l'aide de JavaScript dans IE11

Je ne peux pas obtenir IE11 pour centrer un élément d'entrée après avoir inséré dans le DOM. L'élément ne recevra pas d'entrée de texte après avoir été concentré, mais son texte de placement n'est plus visible. L'élément est créé par réact, et j'y suis accessible via React's's Refs CODE> Object dans ComposantDidMount CODE>:

<div style={style}>
    <div style={labelStyle}>Enter a name to begin.</div>

    <form onSubmit={this.submit} style={formStyle}>
        <input 
             tabIndex="1" 
             ref="input" 
             value={this.state.username} 
             onChange={this.updateUsername}
             placeholder="New User Name" 
             style={inputStyle}
        />
        <button {...this.getBrowserStateEvents()} style={this.buildStyles(buttonStyle)}>Create</button>
    </form>
</div>


5 commentaires

entrée semble être un mauvais choix pour le nom de référence


Avez-vous joué avec les autres méthodes de cycle de vie? Je me demande si des appels vers ComponentDidUpdate gâchent l'ensemble de fichiers dans composantDidMount .


Le problème a été causé par la -MS-User-User-Select: Aucun Propriété CSS.


Ah, je vois - je pense Vous pouvez accepter votre propre réponse.


Je peux. Je dois juste attendre 24 heures après l'avoir posté.


3 Réponses :


2
votes

Je ne pense pas que votre problème provient de la fonction Focus (), je pense que cela vient du sélecteur.

Pour le prouver, je viens d'ouvrir mon IE11 et j'ai essayé de centrer l'entrée de recherche sur le dessus Droit de la page à l'aide de la commande suivante: p>

document.getElementById('search')[0].focus()


2 commentaires

Le problème n'existe que dans IE cependant. L'accent fonctionne bien à Chrome et à Firefox. L'entrée reçoit également une sorte de mise au point partielle (je peux cliquer sur le texte, et le texte de l'espace réservé réapparaît, mais je ne peux pas taper du texte sans cliquer dessus). Je n'utilise pas non plus de sélecteur; J'utilise l'objet de React.


Ensuite, peut-être que le problème vient de REFS REFS Object , je ne sais pas ce que c'est, mais s'il s'agit d'une bibliothèque de troisième partie ou de quelque chose, la question pourrait provenir directement. Ce que je peux voir, c'est que focus () fonctionne correctement sur IE11 lorsqu'il est utilisé sur une entrée.



9
votes

Le problème a été axé sur IE11 est cassé lorsque la propriété CSS -MS-User-Select: Aucune est appliquée à l'entrée. Donc, en modifiant: xxx

dans xxx

J'ai pu résoudre le problème. Voici un codepen pour reproduire le problème: http://codepen.io/anon/pen/ynrjzz


1 commentaires

J'apprécie que cette question a été réparée, mais a relevé un autre. L'utilisateur ne peut pas captiver le texte d'entrée. Comment résoudre ces problèmes?



3
votes

Comme indiqué dans https://stackoverflow.com/a/31971940 , exécution élément.focus () < / Code> n'a aucun effet dans IE11 lorsque la propriété CSS -MS-User-Select: Aucune est définie. Une solution de contournement peut être xxx

ne fonctionne pas dans IE: HTTPS : //codepen.io/macjohnny-zh/Détails/wpxwvy
(Code: https://codepen.io/macjohnny-zh/pen/wpxwvy )

fonctionne à IE, aussi: https://codepen.io/ MacJohnny-ZH / Détails / Lqovbz
(Code: https://codepen.io/macjohnny-zh/pen/lqovbz )

Remarque: cela arrive également par exemple pour xxx

voir https: // github .com / angulaire / matériau2 / Problèmes / 15093


0 commentaires