range-----selection

       之前只是在网上摘下关于selection&range对象的方法使用,认为他们密不可分,错误的认为:range对象必须由window.getSelection().createRange()[range]或document.selection.createRange()[textRange]来生成,其实这个只是一种生成Range的方法,且这种方法是应用于用户选中一段区域。

       查看文档才发现:Range对象表示文档的连续区域,如用户在浏览器窗口中用鼠标拖动选中的区域-----Range对象可以是独立存在的。而range的作用是对文档进行“任意操作”。有了range对象的帮助,selection才更加的强大。比如一般的dom的removeChild只能删除dom结点的所有孩子结点,但是利用range.deleteContents(这个函数名字记不清了),可以精确的删除dom的任何位置的孩子,达到了“精确制导”。

具体例子请看:http://blogyongnan.duapp.com/test/Range.html


ps:再看UEditor时会发现一个有意思的函数,就是range.js中经常会出现把一个“合并兄弟节点”和“拆分父节点”,这个就是把selection对象拆出,能bold而已,不知道自己的UEditor能学到多少,只是感觉能进步就好!

先是做了纠错选中内容(主要用到selection对象),然后做了留言版的功能,发现RIA不错。

---------------------------selection对象--------------------------------------

var makeASel = function(){
            if(window.getSelection){//W3C
                var selection = window.getSelection();
                var range = selection.getRangeAt(0);
		var span = document.createElement("b");
            	span.style.backgroundColor="yellow";
            	range.surroundContents(span);
            }else{//IE
                var sel = document.selection.createRange();
                //document.execCommand('BackColor',false,'#ff0000');
                sel.pasteHTML("<span style=\"background-color: yellow;\">"+sel.htmlText+"</span>")

            }
        }

上面的功能是对选中文本进行更改样式操作。

当然还有很多其他操作,例如对于input中插入相应文本的功能都可以实现。可以参考inputText.selectionStart属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值