• 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 = this.value.substring(0,max);
                    }
                };
            }
        });
    };
  • 相关阅读:
    Linux网络检测手段汇总
    Hadoop单机搭建
    Nginx之Location模块
    关于STM32驱动DS1302实时时钟的一点思考
    灵感手环第一步——0.96寸OLED显示实验
    把简单做到极致
    KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data
    关于SPI通信原理与程序实现
    【转载】keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的原因
    关于keil5使用注意事项(预定义、路径包含)
  • 原文地址:https://www.cnblogs.com/hiker90/p/7306152.html
Copyright © 2020-2023  润新知