<div id="divBBCanvas" style="width: 200px; overflow: hidden; border-style: solid; border-color: Black;" contenteditable="true">
     <span id="a">abc<img src="snap1.bmp" /></span><span id="b">def<img src="snap1.bmp" /></span><span id="c">abc<img src="snap1.bmp" />测试数据
</div>1)不管我点击这个div种的任何位置,都把光标定位到div的结尾(本例中是“测试数据”的后面,如果有测试代码,别写死,没有通用想的代码别贴)
2)和上面的没有联系。加入光标的位置在<span id="b">abc<img src="snap1.bmp" />中的“a”和“b”之间,我如何取到包含光标的这个span(HTML也行,obj也行)。同样别写没有通用性的代码,弄个正则<span[ ]+id[ ]+=[ ]+".*?">ab.*?</span>来糊弄我

解决方案 »

  1.   

    上面写的有点问题
    2)和上面的没有联系。假如光标的位置在 <span id="a">abc <img src="snap1.bmp" />中的“a”和“b”之间,我如何取到包含光标的这个span(HTML也行,obj也行)。同样别写没有通用性的代码,弄个正则 <span[ ]+id[ ]+=[ ]+".*?">ab.*? </span>来糊弄我
      

  2.   

    //IE相关代码,自己改改
    var Element=null,Selection=document.selection,Type=Selection.type,Range=Selection.createRange();
    if(Type=='Control') { if(Range.length>0) Element=Range.item(0); }
    else if(Type=='Text') Element=Range.parentElement();
    else Element=Range.parentElement();
    //Firefox相关代码,自己改改
    var Element=null,Range=getSelection().getRangeAt(0).startContainer;
    if(Range) Element=(Range.nodeType-3?Range:Range.parentNode);
      

  3.   

    //div光标定位
    //IE相关代码
    var o = document.getElementById('divBBCanvas');
    o.focus();
    o.innerHTML=o.innerHTML;
    //Firefox相关代码
    var o = document.getElementById('divBBCanvas');
    o.innerHTML+="<span></span>";
    var c=o.childNodes[o.childNodes.length-1],r=document.createRange();
    r.setStart(c,0);
    r.setEnd(c,0);
    getSelection().addRange(r);
    o.focus();
    效果不理想,希望哪位牛人能够提供好的方法.我的编辑器是用iframe的,http://showjim.qsh.eu/js/example/HtmlEditor.htm
      

  4.   

    <div id="divBBCanvas" style="width: 200px; overflow: hidden; border-style: solid; border-color: Black;" contenteditable="true">
         <span id="a">abc<img src="snap1.bmp" /></span><span id="b">def<img src="snap1.bmp" /></span><span id="c">abc<img src="snap1.bmp" />测试数据
    </div>
    <script>
    document.getElementById("divBBCanvas").onclick=function()
    {
       var e=window.event||e;
       var srcElement = e.srcElement || e.target; 
       alert(srcElement);
    }
    </script>