Zeichen-offset in einem Internet Explorer-TextRange
Soweit ich sagen kann, es ist keine einfache Art und Weise abrufen zu können, ein Zeichen offset von einem TextRange-Objekt in Internet Explorer. Das W3C Range-Objekt hat einen Knoten, und der offset in der text innerhalb des Knotens. IE scheint nur noch pixel-offsets. Es sind Methoden zum erstellen, erweitern und vergleichen Sie reicht, so würde es möglich sein zu schreiben Sie einen Algorithmus zur Berechnung der Zeichen-offset, aber ich glaube, ich muss etwas fehlen.
Also, was ist der einfachste Weg zur Berechnung der Zeichen-offset von dem start des Internet Explorer TextRange?
- Wollen Sie die Anzahl der Zeichen auf der linken Seite des Bildschirms vor dem start die Reichweite?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vorschlagen,IERange, oder einfach nur die
TextRange
-zu-DOM Range
Algorithmus aus.Update, 9. August 2011
Ich würde jetzt vorschlagen, mit meinen eigenen Feingliedrig - Bibliothek, die ähnlich ist in der Idee IERange aber viel mehr vollständig realisiert und unterstützt.
Verwende ich eine Methode basiert auf dieser position der Einfügemarke-trick:
Seit moveEnd gibt die Anzahl der Zeichen tatsächlich verschoben, der offset sollte nun der offset vom Anfang des Dokuments. Dies funktioniert gut für die Prüfung primitive Cursor-Bewegung, aber für erweiterte Selektionen und für immer die genaue Knoten, der hält die Palette verankern, müssen Sie etwas komplexer:
Dieser sollte den richtigen text-caret-Zeichen offset. Natürlich, wenn Sie das Ziel kennen-Knoten bereits oder sind in der Lage, einen Kontext, dann können Sie überspringen die ganze looping-Suche Durcheinander.
Habe ich eine etwas einfachere Lösung, die mit der offset-Werte von einem textRange:
Durchlaufen werden kann das body-element ist
TextRange.text
Eigenschaft mitString.substring()
zu vergleichen, gegen die TextRange, für die Sie möchten, dass der Charakter ausgeglichen.[Referenz für das
findText()
]