我正在创建一个包含多个页面的HTML / CSS / jQuery库。
我确实有一个“下一步”按钮,这是一个带有jQuery点击监听器的简单链接。
问题是,如果用户多次单击该按钮,则会选择该按钮的文本,然后选择整行文本。在我真正的黑暗设计中,这真的很丑陋而且荒谬。
所以这是我的问题:您可以禁用HTML上的文本选择吗? 如果没有,我会非常想念flash和它在文本字段上的高级配置......
答案 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;
}
然后将颜色与“暗”设计相匹配,看看会发生什么:)