Ich benutze einen inhalts-editierbaren iframe, um einen Syntax-Highlighter in Javascript zu erstellen, und eines der wichtigsten Dinge ist, Code richtig einrücken zu können.Auswahlbereiche im Webkit (Safari/Chrome)
Der folgende Code funktioniert, wie es sollte in Firefox:
// Create one indent character
var range = window.getSelection().getRangeAt(0);
var newTextNode = document.createTextNode(Language.tabChar);
range.insertNode(newTextNode);
range.setStartAfter(newTextNode);
Es schafft eine Registerkarte Zeichen und bewegt den Cursor auf die rechte Seite des Charakters. In Chrome und Safari wird ein Zeichen eingefügt, der Cursor bewegt sich jedoch nicht rechts davon.
Ich habe das Range-Objekt sowohl in Chrome als auch in Firefox untersucht und dann festgestellt, dass das Range-Objekt von Firefox viel reicher ist als das von Chrome. Ich konnte keine Spezifikationen des Bereichsobjekts im Webkit finden.
Wie kann ich diesen Code für Webkit und Firefox verwenden?
Vielen Dank!
Fantastisch! Es funktioniert sowohl in Firefox als auch in Chrome :) Danke! – Christoffer
Also in Firefox nur Aufruf von range.setStartAfter() wird die Auswahl zu aktualisieren, selection.addRange() Aufruf ist nicht erforderlich. Chrome benötigt jedoch den Aufruf von addRange(). – maulik13
@ maulik13: Das ist wahr. Firefox ist jedoch der einzige Browser, der das tut, und die Spezifikation sagt nichts darüber aus, daher empfehle ich normalerweise, den 'addRange()' Aufruf zu verwenden, ohne diese Subtilität zu erwähnen. –