首页 > 代码库 > document.selection

document.selection

一、document.selection 介绍

  document.selection 表示当前网页中的选中内容。代表了当前激活选中区,即高亮文本块,和/或文档中用户可执行某些操作的其它元素。  

  selection对象非w3c标准,部分浏览器支持。典型用途是作为用户的输入,以便识别正在对文档的哪一部分正在处理,或者作为某一操作的结果输出给用户。

    ① IE:document.selection

    ② FireFox:window.getSelection()

    ③ document.selection只有IE支持,window.getSelection()也只有 FireFox 和 Safari 支持,都不是标准语法。

   用户和脚本都可以创建选中区。

    用户创建选中区的办法是拖曳文档的一部分。

    脚本创建选中区的办法是在文本区域或类似对象上调用 select 方法。要获取当前选中区,请对 document 对象应用 selection 关键字。要对选中区执行操作,请先用 createRange 方法,从选中区创建一个文本区域对象。 

  方法有:

  • clear 清除选中的内容
  • empty 取消选中
  • createRange 返回 TextRange 或 ControlRange 对象
  • createRangeCollection 不支持

  属性有:

  • type 选中内容的类型
  • typeDetail 不支持

二、document.selection.createRange()

  document.selection.createRange() 根据当前文字选择返回 TextRange 对象,或根据控件选择返回ControlRange 对象。

  配合 execCommand,在 HTML 编辑器中很有用,比如:文字加粗、斜体、复制、粘贴、创建超链接等。

三、示例

  限定 input 的字数:

jQuery.fn.maxLength = function(max){
    this.each(function(){
        var type = this.tagName.toLowerCase();
        var inputType = this.type? this.type.toLowerCase() : null;
        if(type == "input" && inputType == "text" || inputType == "password"){
            //应用标准的maxLength
            this.maxLength = max;
        }else if(type == "textarea"){
            this.onkeypress = function(e){
                var ob = e || event;
                var keyCode = ob.keyCode;
                var hasSelection = document.selection? document.selection.createRange().text.length > 0 : this.selectionStart != this.selectionEnd;
                return !(this.value.length >= max && (keyCode > 50 || keyCode == 32 || keyCode == 0 || keyCode == 13) && !ob.ctrlKey && !ob.altKey && !hasSelection);
            };
            this.onkeyup = function(){
                if(this.value.length > max){
                    this.value = http://www.mamicode.com/this.value.substring(0,max);
                }
            };
        }
    });
};

 

document.selection