这个问题和我昨天解决的问题类似,我整好久才弄出来,或许你可以参考一下:http://blog.csdn.net/sallay/archive/2008/09/16/2937086.aspx

解决方案 »

  1.   

    http://country.lvyou168.cn/flashwariii/editor/这个可以,只是没有上传图片功能,提供的js和插入表情[最后一个图标]一样你上传完后输出js调用下插入图片的js函数,参数我记得好像是图片的服务器路径
      

  2.   

    貌似javascript有个event事件;
    点击的时候记录event坐标
    声明全局变量
    var x;
    var y;
    点击的时候触发一个事件记录这两个值
    上传图片的时候取这两个值!
    才疏学浅,只能献微薄之力
      

  3.   

    @sallay
    我要的是富编辑器的,也就是把整个页面设置成可编辑状态后那种,像2楼给的那种编辑器~~@showbo
    插入表情那里实际上没有用到我说的功能,编辑页面(iframe)没有失去焦点,那个编辑器做的比我的还简陋呢..
    貌似还没正确答案~~
      

  4.   

     
     见 http://ww3.bbtt.us/?fromuid=156244
      

  5.   


    嗯啊~之前没试清楚~~真的可以~~不过最后跟你一样了~图片有时会插到文档外面~~
    if(IsIE)HtmlRange=$('HtmlEditor',true).document.selection.createRange();//保存上次的range
    不过把握好这行代码的执行时机应该就可以了~~~嗯~过两天再结贴~~
      

  6.   

    首先让你的编辑器获得焦点 我用的是框架
    框架.focus();
    然后创建一个选区 用来初始化要添加的数据
    var sel=框架.document.selection.createRange();
    最后添加数据
    sel.pasteHTML(数据);呵呵 很简单把 因为我也做了个编辑器 做好没多长时间 http://www.wt-52.cn/MyWeb/Example/editer/
      

  7.   

    至于楼上所说的数据查到外面去 是没有调用focus()
      

  8.   


    你focus也没用啊~ie下focus后不会回到之前焦点的位置~~所以要搞保存选择区~保存错了就会跑到外面去~~
      

  9.   

    http://blog.csdn.net/zhaogang820125/archive/2007/03/06/1522156.aspx
    四范围
      

  10.   

     if(IsIE)r.execCommand(Command,false,para); 
        else doc.execCommand(Command,false,para);  如果这部分直接用doc.execCommand(Command,false,para)就不会出现我说的那个情况了
      

  11.   

    var frm=$('HtmlEditor',true);
    这个在IE下返回的是:[object]?
    FF下是:[object Window]?
      

  12.   

    ie使用focus时不能保存上次选择的位置,郁闷,改了下可以了init.js//主要更改了这里,在点击时或者输入时自动保存range对象
    function InitFrameEvent(frm,doc)
    {
       if(IsIE)//=====================IE===================
       {
         doc.onclick=function(){HideDiv();HtmlRange=$('HtmlEditor',true).document.selection.createRange();}
         doc.onkeydown=function()
         {
           e=frm.event;//注意这里获取的是iframe中的事件对象      
           if(e.keyCode==13)//在ie时回车生成<p>,替换为<br>.ff下生成<br>,所以不需要处理回车
           {
     e.returnValue=false;//prevent the enter key to exec
     var r=this.selection.createRange();
     r.pasteHTML("<br>");
             r.select();//set the cursor's position
           }
           HtmlRange=$('HtmlEditor',true).document.selection.createRange();
         }
       }
    }selFace.js
    function InsertFace(e)
    {
      if(IsIE){
      var tmpR=$('HtmlEditor',true).document.selection.createRange();
      if(HtmlRange){//已经保存过
    //判断父亲容器是否相同,相同则保存,如果不相同说明创建的range不是编辑器里面的
    //其实这个个好像不需要了,因为修改过init.js了,在编辑器里面添加了自动保存range的事件,暂且留着吧
       if(HtmlRange.parentElement()==tmpR.parentElement())HtmlRange=tmpR
    }
    else{//第一次进入页面没选择编辑器而直接插入图片时将插在第一个位置上
    $('HtmlEditor',true).focus();
    HtmlRange=$('HtmlEditor',true).document.selection.createRange();
    }
      }
      HideDiv();
      e=e||event;
      var divFace=document.getElementById("divFace");
      if(divFace.style.top==null||divFace.style.top.trim()=="")
      {
        divFace.style.top=e.clientY+20+"px";
        divFace.style.left=e.clientX+"px";
      }
      divFace.style.display="block";
    }
      

  13.   

    学习一下,写FCKEditor插件时也碰到这个问题,在别的地方点一下,再点按钮,就插到外面去了... - -!
    不知道怎么解决...
      

  14.   

    嗯 解决方法跟我一样~用的.parentElement()~```
      

  15.   

    楼主的问题,非常的简单setTimeout(function(){Editor.focus()},1000);就可解决.