javascript - 在 IE 中禁用/启用文本选择

标签 javascript css internet-explorer

我们有一个元素,我们禁用所有正文内容的文本选择。所以这个解决方案是普通浏览器的 CSS 样式(如 user-select: none)和 IE 的解决方法(如 document.body.onselectstart = function () { return false; }/)。

所以问题是:如何在 IE 中的某些 div 元素中启用文本选择?以及如何简单快速地做到这一点?

最佳答案

嗯,最简单的方法是颠倒您的逻辑,只将此规则应用于不应选择其文本的元素。将此规则应用于整个主体的问题在于,任何子元素都已经从其父(主体)元素接收到此覆盖事件,并且重新初始化 onselectstart 事件的方法并不像有些人似乎已经假设了他们在这里的答案。在你的情况下,我会为整个 body 删除这条规则,然后只将它应用于没有任何 child 的个别元素,其中压倒一切的规则不得适用。

示例:

<body>
  this is some text that is selectable
  <div style='-o-user-select: none;
              -webkit-user-select: none;
              -moz-user-select: -moz-none;
              -khtml-user-select: none;
              -ms-user-select: none;
              user-select: none;' 
       onselectstart='return false;'
       unselectable='on'>
    this is some text that's not selectable
  </div>  
</body>

> 请参阅 JSFiddle 上的工作演示


请注意,目前尚不支持列出的某些个别属性,但出于面向 future 的目的,我还是添加了它们。规则集以支持尽可能多的不同浏览器的方式编译。有些会遵守 CSS 样式,有些需要 JavaScript hack(IE < 10),而 Opera 浏览器会遵守特殊的元素属性(见下文)。

编辑:添加了对 Opera 浏览器的支持(unselectable='on')

关于javascript - 在 IE 中禁用/启用文本选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14556979/

相关文章:

javascript - 如何避免 "Internet Explorer restricted this webpage from running scripts or ActiveX Controls"消息?

javascript - pageshow 上的 Jquery 移动 ListView css

javascript - html/js onclick 未按要求工作

java - 如何将 Rhino Javascript 1.7 库添加到 Weblogic 10 中的类路径

Javascript |基于连续字母条件的动态字符数组

html - 当鼠标悬停在输入元素的文本上时,如何在 IE 中触发 CSS 悬停事件?

jquery - 使用 jQuery 更改样式表 href 不太有效

css - 如何仅使用 CSS 选择仅具有特定名称的 div 的最后一个子项?

css - jQuery-ui-Slider-Pips 阿拉伯语支持

python - 如何使用带有python的默认浏览器打开和关闭网站