如何阻止在HTML中进行选择?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (37)

我在HTML页面上有一个div,每当我按下鼠标并移动它时,它就会显示“不能放下”光标,就像它选择了一些东西。有没有办法禁用选择?我尝试CSS但没有成功。

提问于
用户回答回答于

专有版本user-select将适用于大多数现代浏览器:

*.unselectable {
   -moz-user-select: -moz-none;
   -khtml-user-select: none;
   -webkit-user-select: none;

   /*
     Introduced in IE 10.
     See http://ie.microsoft.com/testdrive/HTML5/msUserSelect/
   */
   -ms-user-select: none;
   user-select: none;
}

对于IE <10和Opera,需要使用unselectable希望取消选择的元素的属性。可以使用HTML中的属性来设置它:

<div id="foo" unselectable="on" class="unselectable">...</div>

可悲的是,这个属性并没有被继承,这意味着你必须在每个元素的开始标签中放入一个属性<div>。如果这是一个问题,可以改用JavaScript来为元素的后代递归执行此操作:

function makeUnselectable(node) {
    if (node.nodeType == 1) {
        node.setAttribute("unselectable", "on");
    }
    var child = node.firstChild;
    while (child) {
        makeUnselectable(child);
        child = child.nextSibling;
    }
}

makeUnselectable(document.getElementById("foo"));
用户回答回答于

CSS用户选择不阻止图像拖放

HTML:

<img src="ico.png" width="20" height="20" alt="" unselectable="on" /> Blabla bla blabla

CSS:

* {
     user-select: none;
    -khtml-user-select: none;
    -o-user-select: none;
    -moz-user-select: -moz-none;
    -webkit-user-select: none;
}

::selection { background: transparent;color:inherit; }
::-moz-selection { background: transparent;color:inherit; }

JS:

$(function(){
    $('*:[unselectable=on]').mousedown(function(event) {
        event.preventDefault();
        return false;
    });
});

扫码关注云+社区

领取腾讯云代金券