怎么能让div无法选择?

时间:2012-04-22 22:46:14

标签: javascript jquery

我想使特定div的不可选择的双击等应该被阻止。

Here's what I've tried:

<div id="test" class="unselectable">asd</div>

$(document).ready(function() {
    $.ctrl = function(key, callback, args) {
        var isCtrl = false;
        $(document).keydown(function(e) {
            if (!args) args = []; // IE barks when args is null
            if (e.ctrlKey) isCtrl = true;
            if (e.keyCode == key.charCodeAt(65) && isCtrl) {
                callback.apply(this, args);
                return false;
            }
        }).keyup(function(e) {
            if (e.ctrlKey) isCtrl = false;
        });
    };

    //Other Method
    $(function() {
        $(document).keydown(function(objEvent) {
            if (objEvent.ctrlKey) {
                if (objEvent.keyCode == 65) {
                    objEvent.disableTextSelect();
                    return false;
                }
            }
        });
    });  
});​

但令我懊恼的是,我发现这无法奏效。我如何修改我的代码以实现我的目标?

3 个答案:

答案 0 :(得分:7)

您不需要Javascript(reference answer)。这样做:

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

答案 1 :(得分:2)

据我所知,没有办法阻止用户选择div上的文本。由于这是一个浏览器和可能与操作系统相关的功能,因此它超出了您通常可以通过Javascript操作的领域。

如果您想让用户感到非常恼火,可以在整个文档上创建一个事件处理程序,检查用户是否曾一起按下control-A,如果是,请尝试阻止div被选中阻止默认操作或关注页面的其他部分。然而,这只会让他们感到痛苦,因为你试图阻止他们按照他们想要的方式使用他们的计算机,并且可能会让他们从你的网站中获取它们。

您是否可以向我们提供一些有关您不希望用户选择内容的背景信息? 无论你做什么,都会有一个解决方法,考虑到他们只能禁用javascript / CSS并重新加载页面。如果你想让文字更难以复制粘贴你可以制作一个图像包含所需的文字并将其放在div中,但您仍然只是花时间让用户更多对您的网站感到恼火。


虽然我不会轻易要求我完全了解你的整个项目,以至于我可以准确地告诉你你应该做什么,但我会说有可能有更好的方法来实现你的目标。如果您发布更多细节,我们可以帮助您找到它。 :d

答案 2 :(得分:1)

我已经回答了至少三个关于SO的类似问题,并给出了相当明确的答案。 Here's the most popular

我还使用该答案中的信息更新了您的jsFiddle:http://jsfiddle.net/VYKfL/3/