Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在html或JS中禁用突出显示?_Javascript_Html_Css_Highlight - Fatal编程技术网

Javascript 如何在html或JS中禁用突出显示?

Javascript 如何在html或JS中禁用突出显示?,javascript,html,css,highlight,Javascript,Html,Css,Highlight,我需要在我的web应用程序上禁用所选文本的突出显示。我有一个很好的理由这样做,我知道这通常是一个坏主意。但我还是要做。我是否需要使用CSS或JS来做这件事并不重要。我的主要目的是删除突出显示元素的蓝色。我相信您的意思是选择文本(例如,拖动鼠标以突出显示)。如果是,这将取消IE和Mozilla中的选择操作: window.onload = function() { if(document.all) { document.onselectstart = handleSelectAtt

我需要在我的web应用程序上禁用所选文本的突出显示。我有一个很好的理由这样做,我知道这通常是一个坏主意。但我还是要做。我是否需要使用CSS或JS来做这件事并不重要。我的主要目的是删除突出显示元素的蓝色。

我相信您的意思是选择文本(例如,拖动鼠标以突出显示)。如果是,这将取消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不是正确的技术,因为您无法禁用浏览器的查看源代码功能

其他一些想法(都不理想):

  • java小程序(控制文本的显示和检索)
  • 在不同的浏览器插件(flash、silverlight等)中相同
  • 服务器端创建的映像(性能差)

您可以为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;
用户select还有一个webkit前缀,但它使一些表单字段无法聚焦(可能是一个临时错误),因此您可以使用以下webkit伪类:

element::selection

我只是用*来禁用所有元素的高亮显示或轮廓高亮显示

*{
 outline: none;
}

答案参考:

使用
preventDefault
取消
selectstart
事件:

window.addEventListener(“选择开始”,函数(事件){
event.preventDefault();
});
//单行版本
addEventListener(“selectstart”,event=>event.preventDefault())
标题

段落

这个问题不能以当前的形式得到真正的回答。是什么导致突出显示?你说的是关键词突出显示,还是其他什么,比如滚动?我们需要更多的信息。突出显示到底是什么意思?当我左键单击并按住鼠标按钮并拖动文本时,文本会高亮显示。这就是你的意思吗?你是说选择吗?比如当你拖动文本时?在IE中有几种方法,在其他浏览器中也有不同的方法。浏览器通常选择灰色或黑色背景,所以你的意思是链接的颜色吗?这就是我想要的,但它会阻止输入被选择吗?@jcubed。在中止事件冒泡之前,您需要确保自己不在输入或文本区域内。请看我的编辑。不,我只是不想显示大多数浏览器用来显示高亮的蓝色内容。我同意,将页面的所有部分都视为可选择文本是一个值得怀疑的假设。尤其是在实现拖放式用户界面小部件时。它不会停止选择(如果需要,请至少使用javascript->我使用jquery:window.onload=function(){document.onselectstart=function(){return false;}//ie document.onmousedown=function(){return false;}//mozilla}你可能需要额外的脚本来取消键盘快捷键,就像在Windows CTRL+A中一样。但是,确实没有可靠的方法来阻止计算机“专家”复制他们在计算机上看到的内容。你能用这个吗: