我们有一个项目,我们是否禁用了对所有正文内容的文本选择。因此,解决方案是普通浏览器的 CSS 样式(如user-select: none
)和 IE 的解决方法(如document.body.onselectstart = function () { return false; }
)。
所以问题是:如何在 IE 的某些 div 元素中启用文本选择?以及如何简单快速地做到这一点?
我们有一个项目,我们是否禁用了对所有正文内容的文本选择。因此,解决方案是普通浏览器的 CSS 样式(如user-select: none
)和 IE 的解决方法(如document.body.onselectstart = function () { return false; }
)。
所以问题是:如何在 IE 的某些 div 元素中启用文本选择?以及如何简单快速地做到这一点?
好吧,最简单的方法是颠倒您的逻辑,并将此规则仅应用于不应选择其文本的元素。将此规则应用于整个主体的问题在于,任何子元素都已经从其父(主体)元素接收到这个被覆盖的事件,并且重新初始化onselectstart
事件的方法并不像某些人认为的那样容易他们的答案这里。在您的情况下,我会为整个主体删除此规则,然后仅将其应用于没有任何子元素的单个元素,其中不可应用压倒一切的规则。
例子:
<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上的工作演示
请注意,尚不支持列出的某些单个属性,我还是添加了它们以防万一。规则集的编译方式可以支持尽可能多的不同浏览器。有些会遵循 CSS 样式,有些需要 JavaScript hack(IE < 10),而 Opera 浏览器遵循特殊的元素属性(见下文)。
编辑:增加了对 Opera 浏览器的支持 ( unselectable='on'
)
<div onselectstart='return true;'>blablabla</div>
document.body.onselectstart = function (event) {
if(event.srcElement.parentNode.id == 'mydiv')//you may need to loop if the parentNode is
{ //not a div element
return true;
}
else{
return false;
}
}
注意:禁用 javascript 将使用户能够选择文本
我已经更新了小提琴链接
使用 jQuery
$("body").disableSelection();