我用DIV作HTML编辑器,是将DIV 的contentEditable="true",然后改变文本样式采用execCommand在选中文本的情况,改变文本样式(比如:变粗,斜体,颜色)均没有问题,但是如果在没有选中任何文本的情况下(即:将光标置在DIV内)然后执行execCommand,再在光标位置输入内容,没有任何变化我想应该是焦点的问题 var textSelection = document.selection.createRange();   
            textSelection.execCommand('Bold');  

解决方案 »

  1.   

    唉,都等了一天了,都没有人来回答,郁闷啊!自己先顶一下了!
    真的搞不定,也只有用第三方HTML编辑器啦!
    还是希望有人能帮帮忙!
      

  2.   

    也有可能是浏览器问题,之前我调用execCommand方法时在不同的浏览器上实验效果有差异
      

  3.   

    就是在IE上运行,在没有选中文本的时候,执行execCommand不会有效果,除非选中了文本字符串;我用IFRAME将DESIGNMODE="true",然后使用execCommand就可以,不论是否选择了文本都有作用,类似于WORD编辑,没有选中文本时,比如执行BOLD,然后在输入文字时,就会是粗体!所以我不明白DIV中为什么就不行,继续等待高手啊!!!
      

  4.   

    加上这1句就可以了
    range.moveToElementText(document.getElementById("div1"))
    div1就是那个div的ID我这段时间也在设计编辑器,可以加我Q515021775,咱们交流一下呗
      

  5.   

    最后的代码应该是这样的
    var textSelection = document.selection.createRange();   
    textSelection.moveToElementText(document.getElementById("div1"));
    textSelection.execCommand('Bold');   
      

  6.   

    首先谢谢wpf1523分享,
    试了wpf1523提供的代码,确实能起到在未选中文本的时候,改变文本样式,但这样一执行,整个DIV内的所有文字都变了,我想实现的类似WORD功能,选中的文本改变样式,或在没有选中文本时,执行样式,然后输入内容,内容就能应用样式!比如:AAAA,BBBB,CCCC
    第一种情况:当然选中AAAA时,然后执行BOLD,则AAAA变粗体,其它文本不变!
    第二种情况:我将光标放在CCCC的最末尾,然后执行BOLD,再输入文本,文本变成粗体!
      

  7.   

    不建议你这样做,这样你在页面中任何地方的操作都会干扰到range对象的正确获取
      

  8.   

    要保证内容区域的range对象获取不会受到其他地方操作的影响,这就需要内容区域拥有一个独立的document对象,这个就是目前所有的编辑器都使用iframe做内容容器的原因
      

  9.   

    恩,谢谢wpf1523提醒,应该就是这个原因吧,看来还是得用IFRAME来作编辑器比较好些!
    分给你了!