[英]How can I disable highlighting in html or JS?
我需要在我的網絡應用程序上禁用所選文本的突出顯示。 我有一個很好的理由這樣做,並且知道這通常是一個壞主意。 但無論如何我都需要這樣做。 如果我需要使用 CSS 或 JS 來做到這一點並不重要。 我的主要目的是去除高亮元素的藍色。
您可以為 Firefox 使用 CSS 偽類選擇器::selection
和::-moz-selection
。
例如:
::-moz-selection {
background-color: transparent;
color: #000;
}
::selection {
background-color: transparent;
color: #000;
}
.myclass::-moz-selection,
.myclass::selection { ... }
CSS3 解決方案:
user-select: none;
-moz-user-select: none;
用戶選擇還有一個 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;
}
我認為您正在尋找 :focus 偽類。 試試這個:
input:focus {
background-color: #f0f;
}
選擇后,它會給你的輸入一個漂亮的紫色/粉紅色。
我不確定您必須(取消)設置哪些屬性,但我認為您可以通過反復試驗找到自己。
另請注意,突出顯示與否取決於瀏覽器!
當您將鼠標拖到文本上時,您的意思是突出顯示文本嗎?
最好的方法是使用名為 ::selection 的 CSS3 屬性,但是作為 CSS3,它還沒有得到很好的支持。 繼續查找,否則也許有一種方法可以使用 Javascript 來完成。
如果您的最終目標是使文本的復制和粘貼更加困難,那么 Javascript 和 CSS 就不是正確的技術,因為您無法禁用瀏覽器的查看源功能。
其他一些想法(都不理想):
使用preventDefault
取消selectstart
事件:
window.addEventListener("selectstart", function(event) { event.preventDefault(); }); //one-line version addEventListener("selectstart", event => event.preventDefault());
<h1>header</h1> <p>paragraph</p>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.