使用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();
});

好的,这样就可以基本上兼容所有的浏览器了。

使用javascript实现html文本不可选

时间: 2024-11-03 17:08:39

使用javascript实现html文本不可选的相关文章

JavaScript实现在文本框中输入空格时自动填写某个值

<script language="javascript" type="text/javascript"> var txtText4 = "#" + '<%= new DynamicControl(this, "Text4").ClientID%>'; $(function () { $(txtText4).keyup(function (e) { if (e.which == 32) $(this).

浏览器内javascript 转换gbk文本到UTF8编码(chrome, firefox only)

我们在使用xmlhttprequest获取文本内容时,如果服务器返回的是gbk(或gb2312等非utf8编码)内容,那么得到的是一堆乱码,如何转换为浏览器内默认的utf8编码的文字? 其实如果您使用的是chrome 或 firefox浏览器,则非常简单,可以使用浏览器内置对象TextDecoder进行转换. javascript示例代码: if ('TextDecoder' in window) { var files = { 'gbk.txt': 'gbk' }; Object.keys(f

【Javascript】在文本框光标处插入文字并定位光标 (转)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Javascript正则控制文本框只能输入整数或浮点数

这篇文章主要介绍Javascript正则如何控制文本框只能输入整数或浮点数,需要的朋友可以参考下 JS部分代码如下: view source print? 1 function CheckInputIntFloat(oInput)  2 {  3 if('' != oInput.value.replace(/\d{1,}\.{0,1}\d{0,}/,''))  4 {  5 oInput.value = oInput.value.match(/\d{1,}\.{0,1}\d{0,}/) == n

用JavaScript来包装文本元素节点

原文链接: Wrapping Text Nodes and Elements with JavaScript 原文日期: 2014-09-04 翻译日期: 2014-09-06 翻译人员: 铁锚 当你的应用需要依赖某个特定的JavaScript类库时,你无意中总会试图解决某些类库自身的问题,而不是语言的问题.就比如当我试图将文本(可能也包含HTML元素)用一个DIV元素包起来时.假设有以下HTML: This is some text and <a href="">a li

JavaScript DOM_5 操作文本节点

<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.get

【JavaScript】富文本编辑器

这是js写的富文本编辑器,还存在一些bug,但基本功能已经实现,通过这个练习,巩固了js富文本编辑方面的知识,里面包含颜色选择器.全屏.表情.上传图片等功能,每个功能实际对应的就是一个小插件啦 部分程序: var RichEditor = function(container, params) { params = params || {}; var options = { width: 900, height: 500, borderColor: "#ddd", buttons: {

html5 canvas+原生javascript 实时获取文本框内容绘制图片水印

最近有位客户要求在网页图片上加文字水印效果,并且内容是从当前网页的文本输入框实时获取的,研究了一半天,在网上也参考了不少朋友的办法,再加上园子里热心的好哥们帮助终于实现了,先看下效果图: 代码如下: 1 <!DOCTYPE html> 2 <head> 3 <meta charset="UTF-8"> 4 <title>drawing by input text</title> 5 </head> 6 7 <

javascript编写十进制转换为十六进制,javascript光标离开文本框事件,并获取文本框的值

<html> <script type="text/javascript"> function test(input){ var number = 255; var hexString = number.toString(16); alert(hexString); var content=input.value; alert(content); content.replace("1","百度"); content.rep