当前位置: 首页 > news >正文

使用javascript实现html文字不可选

如何使用js让html该文本是不可选定它?首先想到的是用css选择实现,如下面:

-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;

可是这样并不能兼容旧的浏览器,所下面本文将讨论怎样使用js来实现。并兼容全部浏览器。

首先想到的是:

<!doctype html>
<html lang="en">
    <head>
        <title>SO question 2310734</title>
        <script>
            window.onload = function() {
                var labels = document.getElementsByTagName('label');
                for (var i = 0; i < labels.length; i++) {
                    disableSelection(labels[i]);
                }
            };
            function disableSelection(element) {
                if (typeof element.onselectstart != 'undefined') {
                    element.onselectstart = function() { return false; };
                } else if (typeof element.style.MozUserSelect != 'undefined') {
                    element.style.MozUserSelect = 'none';
                } else {
                    element.onmousedown = function() { return false; };
                }
            }
        </script>
    </head>
    <body>
        <label>Try to select this</label>
    </body>
</html>


这样就能够完毕html文本不可选了,假设你在使用jQuery也能够扩展JQuery插件的方式来实现:


<!doctype html>
<html lang="en">
    <head>
        <title>SO question 2310734 with jQuery</title>
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script>
            $.fn.extend({ 
                disableSelection: function() { 
                    this.each(function() { 
                        if (typeof this.onselectstart != 'undefined') {
                            this.onselectstart = function() { return false; };
                        } else if (typeof this.style.MozUserSelect != 'undefined') {
                            this.style.MozUserSelect = 'none';
                        } else {
                            this.onmousedown = function() { return false; };
                        }
                    }); 
                } 
            });

            $(document).ready(function() {
                $('label').disableSelection();            
            });
        </script>
    </head>
    <body>
        <label>Try to select this</label>
    </body>
</html>

或者:

(function ($) {
$.fn.disableSelection = function () {
    return this.each(function () {
        if (typeof this.onselectstart != 'undefined') {
            this.onselectstart = function() { return false; };
        } else if (typeof this.style.MozUserSelect != 'undefined') {
            this.style.MozUserSelect = 'none';
        } else {
            this.onmousedown = function() { return false; };
        }
    });
};
})(jQuery);

$(document).ready(function() {
    $('label').disableSelection();

    // Or to make everything unselectable
    $('*').disableSelection();
});

行,这可以与所有的浏览器基本相容。



版权声明:本文博客原创文章。博客,未经同意,不得转载。

相关文章:

  • 大型数据库 实用解决方案
  • [家里蹲大学数学杂志]第409期与正弦对数有关的一个积分不等式
  • 初学者应学会如何加快seo
  • 网页的重绘和回流
  • Skype for Business Server 2015系列(三)部署前端服务器-2
  • 3.2.用户空间客体管理器
  • Nginx的流媒体插件nginx-rtmp-module
  • iOS开发UITableView基本使用方法总结
  • centos6.5下postgres-XC集群安装与配置(有standby案例)
  • 最近用到Bootstrap Multiselect来详细了解一下
  • python特殊注释
  • MySql | 查询缓存笔记
  • 我的Android进阶之旅------FastJson的简介
  • WebX5 Data判断当前行的值是否改变,以及改变当前行的状态
  • AngularJS学习笔记
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Docker 笔记(2):Dockerfile
  • ES6系列(二)变量的解构赋值
  • es的写入过程
  • JAVA多线程机制解析-volatilesynchronized
  • mysql 数据库四种事务隔离级别
  • python3 使用 asyncio 代替线程
  • React中的“虫洞”——Context
  • STAR法则
  • ubuntu 下nginx安装 并支持https协议
  • Wamp集成环境 添加PHP的新版本
  • WePY 在小程序性能调优上做出的探究
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 强力优化Rancher k8s中国区的使用体验
  • 如何在GitHub上创建个人博客
  • 实现菜单下拉伸展折叠效果demo
  • 一起参Ember.js讨论、问答社区。
  • 再次简单明了总结flex布局,一看就懂...
  • Android开发者必备:推荐一款助力开发的开源APP
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • "无招胜有招"nbsp;史上最全的互…
  • #define与typedef区别
  • #NOIP 2014#Day.2 T3 解方程
  • (C语言)逆序输出字符串
  • (Git) gitignore基础使用
  • (LeetCode 49)Anagrams
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (原創) 物件導向與老子思想 (OO)
  • (转)负载均衡,回话保持,cookie
  • (转载)Linux网络编程入门