我们有一个元素,我们禁用所有正文内容的文本选择。所以这个解决方案是普通浏览器的 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/