Hermann Heck: Cursorposition in DIV

Hallo!

wie kann ich die aktuelle Cursor-Position in einem DIV (Text)auslesen.

Danke im voraus,
Hermann

  1. Hallo,

    wie kann ich die aktuelle Cursor-Position in einem DIV (Text)auslesen.

    Es existiert in einem HTMLDivElement üblicherweise kein Textcursor. Bitte formuliere Dein Problem genauer.

    viele Grüße

    Axel

    1. Hallo Axel,

      ich möchte das HTMLDivElement als Editor benutzen, in dem neben Text auch Abbildungen und Tabellen kopiert werden können. Normalerweise werden Inhalte aus der Zwischenablage ohne Probleme an der Cursor-Position eingefügt. Ich möchte jedoch den Inhalt der Zwischenablage filtern (Entferung aller HTML-Tags mittels RegExp-Funktion). Dazu muß ich aber zunächst den Inhalt der Zwischenablage in ein 2. DIV kopieren. Das erfordert jedoch die Verlagerung des Focus auf das 2. DIV. Bei der Rückkehr des Focus auf das 1. DIV steht der Kursor immer an der Anfansposition. Wie kann ich an die primäre Einfügeposition zurückkommen?

      Gruß Hermann

      Hallo,

      wie kann ich die aktuelle Cursor-Position in einem DIV (Text)auslesen.
      Es existiert in einem HTMLDivElement üblicherweise kein Textcursor. Bitte formuliere Dein Problem genauer.

      viele Grüße

      Axel

      1. Hallo,

        ich möchte das HTMLDivElement als Editor benutzen, in dem neben Text auch Abbildungen und Tabellen kopiert werden können. Normalerweise werden Inhalte aus der Zwischenablage ohne Probleme an der Cursor-Position eingefügt. Ich möchte jedoch den Inhalt der Zwischenablage filtern (Entferung aller HTML-Tags mittels RegExp-Funktion). Dazu muß ich aber zunächst den Inhalt der Zwischenablage in ein 2. DIV kopieren. Das erfordert jedoch die Verlagerung des Focus auf das 2. DIV. Bei der Rückkehr des Focus auf das 1. DIV steht der Kursor immer an der Anfansposition. Wie kann ich an die primäre Einfügeposition zurückkommen?

        Aus http://www.faqts.com/knowledge_base/view.phtml/aid/13242/fid/128 habe ich mal das Folgende gebastelt:

          
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  
                "http://www.w3.org/TR/html4/strict.dtd">  
        <html>  
        <head>  
        <title>Text des Titels</title>  
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
        <script type="text/javascript">  
        var cursorPos;  
        function saveCursorPos(){  
         cursorPos=document.selection.createRange().duplicate();  
        }  
        </script>  
        </head>  
        <body>  
        <h1>Test</h1>  
        <button onclick="cursorPos.select();">Focus</button>  
        <hr>  
        <div id="test" contenteditable onkeypress="saveCursorPos();" onclick="saveCursorPos();">Beiker was a  
        baker once.</div>  
        <hr>  
        <input type="Text" name="t1" value="" size="10" maxlength="10">  
        </body>  
        </html>  
        
        

        Klicke oder schreibe in das DIV, klicke dann in das Textfeld, klicke dann auf [Focus]. Der Cursor sollte nun wieder im DIV an der letzten Position stehen.

        Das ist natürlich IE only. Im Prinzip sollte das aber auch mit einem IFrame im designMode funktionieren.

        viele Grüße

        Axel

  2. Hallo Hermann,

    wie kann ich die aktuelle Cursor-Position in einem DIV (Text)auslesen.

    meinst du die Mausposition in Pixelwerten? Dann, indem du sie im Window ausliest und von den entsprechenden Werten die offsetTop- und offsetLeft-Werte sämtlicher Vorfahrenselemente (offsetParent des offsetParents usw.) deines DIVs subtrahierst.

    http://forum.de.selfhtml.org/archiv/2004/4/t79429/#m460179

    Oder meinst du den Textcursor innerhalb eines editierbaren DIVs? Dann würde ich mal nach Stichworten wie "Selection" und "Range" suchen.

    Gruß Gernot

    1. Hallo Gernot,

      ich meine den Textcursor innerhalb eines editierbaren DIVs. "Selection" und "Range" habe ich getestet. Sie sind innerhalb eines TEXTAREA, nicht aber in einem DIV anwendbar.

      Dennoch besten Dank für die Antwort.

      Gruß Hermann

      Hallo Hermann,

      wie kann ich die aktuelle Cursor-Position in einem DIV (Text)auslesen.

      meinst du die Mausposition in Pixelwerten? Dann, indem du sie im Window ausliest und von den entsprechenden Werten die offsetTop- und offsetLeft-Werte sämtlicher Vorfahrenselemente (offsetParent des offsetParents usw.) deines DIVs subtrahierst.

      http://forum.de.selfhtml.org/archiv/2004/4/t79429/#m460179

      Oder meinst du den Textcursor innerhalb eines editierbaren DIVs? Dann würde ich mal nach Stichworten wie "Selection" und "Range" suchen.

      Gruß Gernot

      1. Hallo Hermann,

        ich meine den Textcursor innerhalb eines editierbaren DIVs. "Selection" und "Range" habe ich getestet. Sie sind innerhalb eines TEXTAREA, nicht aber in einem DIV anwendbar.

        Da wäre aber auch noch das BODY-Element, auf das die Methode createTextRange anwendbar wäre.

        "To retrieve a text range object, apply the createTextRange method to a body, button, or textArea element or an input element that has TYPE text."

        http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/obj_textrange.asp

        Vielleicht gibt es ja dann dazu, einen kompletten Body innerhalb eines in einem Iframe eingebunden Dokuments anzusprechen, keine Alternative. So verfahren ja meines Wissens auch die bekannten Online-Editoren.

        Gruß Gernot