Javascript:检测Carets父节点

Ada*_*dam 5 javascript wysiwyg parent caret

我正在iframe中使用designMode构建一个简单的WYSIWYG编辑器,目前我可以使所选文本变为粗体,斜体和下划线以及链接,并且它们工作正常.

但我想知道什么时候caret是内部的b,i,u,a,标签,这样我就可以通知当前的选择是勇敢的或任何用户.

例子:

Hello <b>Stackover|flow</b> is cool!=你在b标签内

<i>Be|st place</i>!=你在i标签内

Hello <a href="http://stackoverflow.com/">Go|od stuff!</a>=你在a标签内

没有图书馆,我想学习这个东西:)

Dr.*_*lle 8

MSIE lte 8:TextRange.parentElement()

其他:DOMRange.commonAncestorContainer

<script type="text/javascript">
<!--
function fx()
{

  var target=null;
  if(window.getSelection)
  {
    target=window.getSelection().getRangeAt(0).commonAncestorContainer;
    return((target.nodeType===1)?target:target.parentNode);
  }
  else if(document.selection)
  {
    var target=document.selection.createRange().parentElement();
  }
  return target;
}
//-->
</script>
<input type="button" onclick="alert(fx().tagName)" value="click">
<div id="editor" contenteditable="true">
Hello <b>Stackoverflow</b> is cool! <i>Best place</i>
Hello <a href="http://stackoverflow.com/">Good stuff!</a>
</div>
Run Code Online (Sandbox Code Playgroud)