Thomas: createRange() in DesignMode-Frame

Hallo.

Ich versuche in einem Frame (designMode = 'on') den Cursor zu verschieben.

Der Frame sieht so aus:
<iframe style="width:300px;height:300px;border:1px solid #000;" id="ew" src="designmode0.htm"></iframe>

Beim onload-Event passiert Folgendes:
document.getElementById('ew').contentDocument.designMode = "On";

Und diese Funktion wird aufgerufen um den Cursor zu verändern/verschieben:

document.getElementById('ew').focus();
  var range = document.getElementById('ew').contentDocument.selection.createRange();
  range.moveStart('character',2);
  range.select();

Ich benutze Opera.
Das Problem das auftritt ist einfach, dass gar nichts passiert.
Der Frame wird angesprochen. Range scheint auch zu exisiteren (...createRange().text gibt mir den selektierten Text).
Aber aus irgendeinem Grund will der Cursor nicht weiterspringen :(

Ich hoffe jemand von euch hat eine Idee.

Danke für Antworten,
Thomas

  1. Hallo,

    welche Opera-Version verwendest du?

    Opera hat noch einige Bugs in der Implementierung der verschiedenen move-Methode von TextRanges. Versuche es mal mit einer aktuellen Beta-Version, vielleicht funktioniert es dann schon. Auch mal die verschiedenen move-Methoden (move, moveStart, moveEnd) durchprobieren.

    Mathias

    1. Hallo,

      welche Opera-Version verwendest du?

      9.27 unter XP

      Opera hat noch einige Bugs in der Implementierung der verschiedenen move-Methode von TextRanges. Versuche es mal mit einer aktuellen Beta-Version, vielleicht funktioniert es dann schon. Auch mal die verschiedenen move-Methoden (move, moveStart, moveEnd) durchprobieren.

      move, moveStart, moveEnde habe ich alles schon probiert. Klappt im Textfeld, aber leider nicht im DIV.

      Der FF will das ganze auch nicht verstehen...
      Bei dem kommt:
      Fehler: document.getElementById("ew").contentDocument.selection has no properties

      Ich versuch gleich mal die Beta-Version, aber irgendwie läuft's ja bisher in keinem Browser :-/

      Gruß,
      Thomas

      1. Hallo,

        Der FF will das ganze auch nicht verstehen...
        Bei dem kommt:
        Fehler: document.getElementById("ew").contentDocument.selection has no properties

        Firefox kennt keine TextRanges, aber Selection- und Range-Objekte.

        Mit dem Selection-Objekt einfach:

        var sel = win.getSelection();
        sel.collapse(sel.anchorNode, sel.anchorOffset - 2);
        Vorher ggf.

        funktioniert bei mir problemlos in Firefox 2 und Opera (allerdings 9.50 Beta 2 Build 1887, darunter müsstest du probieren).

        Alternativ könnte man vermutlich über Ranges arbeiten (setStart, startContainer, startOffset).

        Mathias