7
votes

Comment ajouter un prototype d'un élément d'entrée?

J'ai un élément d'entrée: xxx

Je souhaite créer un selectionStart xxx

Les fonctions J'ai besoin: xxx

Comment puis-je ajouter cette "propriété" à sur IE? Est-ce possible?


0 commentaires

3 Réponses :


4
votes

Vous voudrez étendre le < Code> htmlinputelement interface, comme celui-ci: xxx

Cependant, les experts javascript considèrent ceci a un mauvaise pratique .


0 commentaires

4
votes

Premièrement, c'est une mauvaise idée en principe et en pratique d'essayer d'étendre les objets hôtes. Des objets hôtes tels que DOM Éléments peuvent faire à peu près ce qu'ils aiment; En particulier, ils ne sont pas obligés de soutenir ce que vous essayez de faire et dans IE <= 8, ce que vous ciblez avec ce code, les éléments DOM ne supportent tout simplement pas cela. Vos options sont soit à utiliser une fonction sur laquelle vous passez un élément d'entrée, soit de créer un objet wrapper pour chaque entrée qui dispose des méthodes et des propriétés dont vous avez besoin.

second, votre getSelectionStart () et getSelectionendendendend () Les fonctions sont défectueuses: ils ne gèrent pas correctement les nouvelles lignes dans Texareas et ne seront pas une logique défectueuse autour de LastIndexof < / code> (que si le texte sélectionné apparaît plus d'une fois dans l'entrée?). J'ai fait beaucoup de travail à ce sujet et je suis arrivé avec ce que je suis assez convaincu est la meilleure fonction pour obtenir des sélections d'entrée et de textare dans tous les grands navigateurs, que je posté ici quelques jours il y a quelques jours: Est-ce possible de détecter de manière programmable la position du calet dans un Elément?


1 commentaires

J'essayais juste de réparer le foutu, c'est-à-dire. Ces fonctions que je viens de copier un article google.com/... . Merci de pointer ces défauts et de fournir une fonction fiable. Je suppose que je n'ai pas d'autre choix, je vais devoir utiliser une méthode à la place ...



0
votes

1 commentaires

Ils sont liés, mais ils ne sont pas la même question.