我需要禁用我的网络应用程序上选定文本的高亮显示。我有一个很好的理由这样做,并且知道这通常是一个不好的想法。但无论如何我都需要这样做。使用CSS或JS都可以,最主要的是去除突出显示元素时给出的蓝色颜色。
你可以使用 CSS 伪类选择器 ::selection
和 ::-moz-selection
来针对 Firefox 进行设置。
例如:
::-moz-selection {
background-color: transparent;
color: #000;
}
::selection {
background-color: transparent;
color: #000;
}
.myclass::-moz-selection,
.myclass::selection { ... }
user-select: none;
-moz-user-select: none;
在user-select属性中也有一个webkit前缀,但它会导致某些表单字段无法聚焦(可能是临时性错误),因此您可以使用以下webkit伪类:
element::selection
我相信你的意思是选择文本(例如,拖动鼠标以突出显示)。如果是这样,在IE和Mozilla中,这将取消选择操作:
window.onload = function() {
if(document.all) {
document.onselectstart = handleSelectAttempt;
}
document.onmousedown = handleSelectAttempt;
}
function handleSelectAttempt(e) {
var sender = e && e.target || window.event.srcElement;
if(isInForm(sender)) {
if (window.event) {
event.returnValue = false;
}
return false;
}
if (window.event) {
event.returnValue = true;
}
return true;
}
function isInForm = function(element) {
while (element.parentNode) {
if (element.nodeName.ToUpperCase() == 'INPUT'
|| element.nodeName.ToUpperCase() == 'TEXTAREA') {
return true;
}
if (!searchFor.parentNode) {
return false;
}
searchFor = searchFor.parentNode;
}
return false;
}
使用 preventDefault
取消 selectstart
事件:
window.addEventListener("selectstart", function(event) {
event.preventDefault();
});
//one-line version
addEventListener("selectstart", event => event.preventDefault());
<h1>header</h1>
<p>paragraph</p>
input:focus {
background-color: #f0f;
}
当被选中时,它会给你的输入一个漂亮的紫色/粉色。
我不确定你需要设置或取消哪些属性,但我认为你可以通过试错自己找到。
还要注意,高亮或缺失取决于浏览器!