J'ai un javascript qui manipule html en fonction de ce que l'utilisateur a sélectionné. Pour les navigateurs réels les méthodes que je utilise l'effet de levier de l'objet « Range », obtenus en tant que tel:Problème de détection de Newlines dans JavaScript Range Object
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var content = range.toString();
La variable de contenu contient tout le texte sélectionné, qui fonctionne très bien. Cependant, je trouve que je ne peux pas détecter les nouvelles lignes dans la chaîne résultante. Par exemple:
texte sélectionné est:
abc
def
ghi
range.toString() est évaluée à "abcdefghi".
Toute recherche sur les caractères spéciaux ne renvoie aucune instance de \ n \ f \ r ou même \ s. Si, cependant, j'écris la variable sur un contrôle éditable, les retours à la ligne sont de nouveau présents.
Est-ce que quelqu'un sait ce que je manque?
Il peut être pertinent que ces sélections et manipulations concernent des divs modifiables. Le même comportement est apparent dans Chrome, FireFox et Opera. Étonnamment, IE a besoin d'un code totalement différent de toute façon, mais il n'y a pas de problèmes, sauf que c'est juste IE.
Merci beaucoup.
Qu'entendez-vous par 'range.toString() évalue à "abcdefghi"'? Qu'est-ce que vous utilisez pour examiner cette valeur? Un débogueur? alerte()? –
Ecrivez-vous une valeur 'range' pour un contrôle modifiable ou' range.toString() '? – RaYell
@Ben Dunlap tout ce qui précède, en utilisant des débogueurs externes, des alertes, ou des débogueurs basés sur le navigateur. Par exemple frapper dans un point d'arrêt avec Visual Studio. @RaYell - J'ai essayé d'écrire le contenu résultant de mon appel range.toString() dans un div editable, pour prouver qu'il maintenait les informations de retour à la ligne. La première réponse est clouée, le sel.toString() a les retours à la ligne, range.toString() non. Merci à tous. – Timbo