想在一个编辑器里的光标处加一个插入分页符的功能,插入内容为<div style="page-break-after:always"></div>js代码如下:
function a()
{
   var oBody = _this.iframe.contentWindow.document;
   var e=oBody.createElement( 'DIV' );
   e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>'
      with(e.style)
      {
          pageBreakAfter="always"
          ……
      };
      _this.iframe.contentWindow.document.body.appendChild(e);}现在的问题是:
  该div出现的位置不是在光标处(即指定位置处),而是附加到了编辑器的最后位置,这个问题要怎么解决呢?谢谢!

解决方案 »

  1.   

    ie:
    this._iframe.contentWindow.document.selection.createRange().pasteHTML('<div></div>')没有测试 也不知道对不对 
    ff 就不清楚了.
      

  2.   

    javascript 高级程序设计 有一章是讲 这个的 . 详细的看下.
      

  3.   

    我以前写编辑器的时候,对于execCommand不能操作的元素
    都是用execCommand创建一个元素 如:创建一个img(因为用它可以指定到光标的位置)
    然后用需要的元素替换掉那个img,就可以达到定位在光标所在的位置
      

  4.   

    参见:http://www.jslab.org.cn/?tag=selection&page=5Rich-Text Editing in Mozilla
      

  5.   

    不能使用.pasteHTML()方法!
      

  6.   

    关注,不过可以肯定的是appendchild肯定是在末尾添加元素
      

  7.   

    写了,也只能支持IE了。FF哪是不是的哦。没兼容性了,
      

  8.   

    IE 用 .pasteHTML(html);
    FF 用 _this.iframe.contentWindow.document.execCommand('insertHTML',false, html);
      

  9.   

       var Iframe;
    if(document.frames)
     Iframe = frames.document.frames("iframe");
    else
     Iframe= document.getElementById("iframe").contentWindow;
    var range ;
            if(Iframe.getSelection){ 
                range=Iframe.getSelection().getRangeAt(0);    
            }else if(document.selection){ 
                range=Iframe.document.selection.createRange();
            }
            if(range.pasteHTML)
            {
                 range.pasteHTML("<div style='page-break-after:always'></div>"); 
            }else{
                 var div= document.createElement("div");
    div.style.pageBreakAfter='always';
                            range.surroundContents(div);
            }