如何禁用CSS或JavaScript文本选择?

时间:2010-09-23 14:39:06

标签: html css cross-browser textselection

  

可能重复:
  CSS rule to disable text selection highlighting

我正在创建一个包含多个页面的HTML / CSS / jQuery库。

我确实有一个“下一步”按钮,这是一个带有jQuery点击监听器的简单链接。

问题是,如果用户多次单击该按钮,则会选择该按钮的文本,然后选择整行文本。在我真正的黑暗设计中,这真的很丑陋而且荒谬。

所以这是我的问题:您可以禁用HTML上的文本选择吗? 如果没有,我会非常想念flash和它在文本字段上的高级配置......

5 个答案:

答案 0 :(得分:291)

<div 
 style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none;" 
 unselectable="on"
 onselectstart="return false;" 
 onmousedown="return false;">
    Blabla
</div>

答案 1 :(得分:248)

更新2017年1月:

根据Can I use,除了Internet Explorer 9和早期版本之外,所有浏览器目前都支持user-select(但遗憾的是需要供应商前缀)。


所有正确的CSS变体都是:

.noselect {
  -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none; /* Safari */
     -khtml-user-select: none; /* Konqueror HTML */
       -moz-user-select: none; /* Firefox */
        -ms-user-select: none; /* Internet Explorer/Edge */
            user-select: none; /* Non-prefixed version, currently
                                  supported by Chrome and Opera */
}
<p>
  Selectable text.
</p>
<p class="noselect">
  Unselectable text.
</p>


请注意,它是非标准功能(即不是任何规范的一部分)。它不能保证在任何地方都可以工作,并且浏览器之间的实现可能存在差异,并且将来的浏览器可能会失去对它的支持。


更多信息可在Mozilla Developer Network documentation中找到。

答案 2 :(得分:29)

尝试使用此CSS代码以实现跨浏览器兼容性。

-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;

答案 3 :(得分:7)

您可以使用JavaScript来执行您想要的操作:


if (document.addEventListener !== undefined) {
  // Not IE
  document.addEventListener('click', checkSelection, false);
} else {
  // IE
  document.attachEvent('onclick', checkSelection);
}

function checkSelection() {
    var sel = {};
    if (window.getSelection) {
        // Mozilla
        sel = window.getSelection();
    } else if (document.selection) {
        // IE
        sel = document.selection.createRange();
    }

    // Mozilla
    if (sel.rangeCount) {
        sel.removeAllRanges();
        return;
    }

    // IE
    if (sel.text > '') {
        document.selection.empty();
        return;
    }
}

肥皂盒: 你真的不应该以这种方式搞砸客户的用户代理。如果客户想要在文档上选择内容,那么他​​们应该能够在文档上选择内容。 不喜欢高亮颜色并不重要,因为不是查看文档的人。

答案 4 :(得分:5)

我不确定你是否可以关闭它,但你可以改变它的颜色:)

myDiv::selection,
myDiv::-moz-selection,
myDiv::-webkit-selection {
    background:#000;
    color:#fff;
}

然后将颜色与“暗”设计相匹配,看看会发生什么:)