Ho qualche javascript che manipola il codice HTML in base a ciò che l'utente ha selezionato. Per i browser reali i metodi che sto usando leverage l'oggetto "Range", ottenuti come tale:Problema durante il rilevamento di righe nuove nell'oggetto intervallo JavaScript
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var content = range.toString();
variabili Il contenuto contiene tutto il testo selezionato, che funziona bene. Tuttavia sto scoprendo che non riesco a rilevare le nuove righe nella stringa risultante. Per esempio:
testo selezionato è:
abc
def
ghi
range.toString() valuta a "abcdefghi".
Qualsiasi ricerca su caratteri speciali non restituisce istanze di \ n \ f \ r o anche \ s. Se, tuttavia, scrivo la variabile su un controllo modificabile, i feed di riga sono nuovamente presenti.
Qualcuno sa cosa mi manca?
Potrebbe essere importante che queste selezioni e manipolazioni siano su div modificabili. Lo stesso comportamento è evidente in Chrome, FireFox e Opera. Sorprendentemente, IE richiede comunque un codice completamente diverso, ma non ci sono problemi, a parte il semplice fatto di essere IE.
Molte grazie.
Cosa intendi con 'range.toString() restituisce "abcdefghi"'? Che cosa stai usando per esaminare questo valore? Un debugger? mettere in guardia()? –
Stai scrivendo il valore di 'range' sul controllo modificabile o' range.toString() '? – RaYell
@Ben Dunlap tutto quanto sopra, utilizzando debugger esterni, avvisi o debugger basati su browser. Ad esempio, colpire in un punto di interruzione con Visual Studio. @RaYell - Ho provato a scrivere il contenuto risultante dalla mia chiamata range.toString() in un div editabile, per dimostrare di aver mantenuto le informazioni sulla nuova riga. Prima risposta inchiodata a questo, il sel.toString() ha le nuove righe, range.toString() no. Grazie a tutti. – Timbo