Ralph: Abwandlung der Lösung

Beitrag lesen

Hallo,

meint Ihr, diese Abwandlung des letzten Postings ist so in Ordnung?
Bei nicht-IE-Browsern wird das Zeug einfach hinten dran gehaengt, dann hat der User wenigstens die Tags.
Beim IE wird's entweder an der aktuellen Cursor-Position eingefuegt oder der markierierte Text mit Tags versehen ==> Problem: will ich selektierten Text 2-mal hintereinander bearbeiten, funzt das nicht.

Irgendeine Idee?
Ralph

==========================
<script language=javascript>
<!--

var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));

function markSelection(txtObj)
{
  if(txtObj.createTextRange)
  {
    txtObj.caretPos = document.selection.createRange().duplicate();
  }
}

function insertTag(txtName,tag,enclose)
{
  var closeTag = tag;
  if(enclose)
  {
    var attribSplit = tag.indexOf(' ');
    if(tag.indexOf(' ') > -1)
    {
      closeTag = tag.substring(0, attribSplit);
    }
  }

var txtObj = eval("document.forms[0]." + txtName);
  if (is_ie)
  {
    if(txtObj.createTextRange && txtObj.caretPos)
    {
      var caretPos = txtObj.caretPos;
      if (caretPos.text == '')
      {
        content = 'YOUR TEXT';
      }
      else
      {
        content = caretPos.text;
      }
      if (enclose)
      {
        caretPos.text = "<" + tag + ">" + content + "</" + closeTag + ">";
      }
      else
      {
        caretPos.text = "<" + tag + ">" + content;
      }
    }
  }
  else
  {
    if (enclose)
    {
      txtObj.value += ('<' + tag + '>YOUR TEXT<' + closeTag + '>');
    }
    else
    {
      txtObj.value += ('<' + tag + '>YOUR TEXT');
    }
  }
}

//-->
</script>

<form NAME="chapterForm">
<textarea name="tsttxt" rows="20" cols="40" ONSELECT="markSelection(this);" ONCLICK="markSelection(this);" ONKEYUP="markSelection(this);"></textarea>
<input type="button" value="BOLD" onClick="javascript:insertTag('tsttxt', 'b', true);">
<input type="button" value="PARAGRAPH" onClick="javascript:insertTag('tsttxt', 'p', false);">
</form>