禁止拖选文本的方法

最近在做一个模拟的window窗口,遇到调整窗口大小时,会拖选相关元素,
尝试了以下的方法,有点作用,但是最好的还是直接禁用document的选择,调整大小mouseup,再恢复.

<body>
    <div style="border:10px solid green; margin:50px; padding:50px;" id="div1">
    <pre>禁止拖放对象文本被选择的方法: 
    1.ie中设置拖放对象的onselectstart返回false,在ff中设置样式MozUserSelect(css:-moz-user-select)为none。 
    这种方法只能禁止拖放对象本身被选择。 
    2. 
    ie:document.selection.empty() 
    ff:window.getSelection().removeAllRanges() 
    兼容的写法: 
    window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); 
    这种方法不但不影响拖放对象的选择效果,还能对整个文档进行清除. 
    </pre>
    </div>
    <div style="height:100px; background:skyblue; margin:50px; padding:50px;" id="div2">
        止拖放对象文本被选择的方法: 
        1.ie中设置拖放对象的onselectstart返回false,在ff中设置样式MozUserSelect(css:-moz-user-select)为none。 这种方法只能禁止拖放对象本身被选择。 
    </div>
    <hr>
    <input type="text" name="user" id="user" value="sdfdfdfsdfdsf" style="width:100%;line-height:40px; height:40px;" />

    <script>
        function $id(id){ return document.getElementById(id); }
        var div1 = $id('div1'), div2 = $id('div2'),user = $id('user');
        div1.onselectstart = function(){ 
            console.log('select start'); 
            //测试:Chrome IE
            //1:若onselectstart是在 div1 内部发生的 则禁止选中 div1内的内容,
            //(但chrome可以选中 div1以外的内容,ie不能)
            //2: 若onselectstart是在 div1 外部发生,还是可以选中div1内的内容
            return false; 
        }

        //获取当前选择 并取消选择
        /** 清楚当前选中内容
        * chrome firefox:
          s = window.getSelection(); s.empty(); 
          or s.removeAllRanges(); // s.collapse(1);
        * ie:document.selection.empty()
        * 兼容的写法: 
          window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); 
            这种方法不但不影响拖放对象的选择效果,还能对整个文档进行清除.
        */
        
        /**
         * 禁止选中文本
         */
        function disableSelection(ele){
            if(typeof ele.onselectstart !="undefined"){//ie
                ele.onselectstart = function(){ return false; }
            }else if(typeof ele.style.MozUserSelect !='undefined'){
                ele.style.MozUserSelect = 'none';
            }else{
                ele.onmousedown = function(){return false;}
            }
        }
    </script>
</body>

转载于:https://www.cnblogs.com/stephenykk/p/4153199.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值