本帖最后由 u010572351 于 2013-05-31 17:39:28 编辑

解决方案 »

  1.   

    学习了!我弱弱的问一下document.forms[0].cons后面的.cons是什么意思啊?
      

  2.   


    是document里面的的form对象获取对象的方法,cons是input的name值。
      

  3.   


    是document里面的的form对象获取对象的方法,cons是input的name值。
    嗷嗷嗷,谢谢!
      

  4.   

    楼主你确定这样能兼容其他浏览器?TextRange以及 moveStart这些方法都是只有IE里面才有的
      

  5.   

    嗯,这个我知道,其他浏览器默认会保存光标的位置。当时我在设计编辑器,这个问题困扰了我很久,最后的解决办法是先判断浏览器是否为IE,然后再为内容区域绑定onbeforedeactivate和onactivate这2个事件,通过onbeforedeactivate事件调用selection.createRange().getBook()来获取光标的位置,然后在onactivate事件中通过moveToBook来定位光标,最后顺利实现了    SaveSlectionRange: function () {
            /// <summary>
            ///保存光标的位置,此操作只针对IE,其他浏览器无需另外保存
            /// </summary>
            if (this.browser.ie) {
                //IE中内容区域通过Focus()获取焦点后,无法自动定位到上一次光标的位置,所以这里通过onbeforedeactivate和onactivate这2个事件来达到这个目的
                var ieSelectionBook;var me = this;
                this.ContWindow.document.onbeforedeactivate = function () {
                    //当内容区域失去焦点之前触发该事件
                    var range = this.selection.createRange();
                    ieSelectionBook = range.getBook();
                    var sel = new System.Selection(me.ContWindow);
                    System.RangeCache = sel.getRange();
                };
                this.ContWindow.document.onactivate = function () {
                    //当内容区域被激活之前触发该事件
                    if (ieSelectionBook) {
                        var range = this.body.createTextRange();
                        range.moveToBook(ieSelectionBook);
                        range.select();
                        ieSelectionBook = null;                }            }        }    }
    这个就是我当时的写法
      

  6.   

    总体是你水平要高点,然后上面的写法是我在网上找的,然后去掉了很多不用的代码,最后以三句实现了,不过w3c里面好像都没有关于上面这些dom及方法这些的说明,你找到了吗?
      

  7.   

    额,现在也找不到了,只有简单的2句话解释
    onbeforedeactivate:在 activeElement 从当前对象变为父文档其它对象之前立即触发。
    onactivate:当对象设置为活动元素时触发