Opera 10.62和IE9支持用户选择吗?

11

我一直在尝试在Opera 10.62和IE9上应用user-select,但没有成功。 我不能/不想使用JavaScript绑定事件来preventDefault(),因为需要设置许多地方为不可选,并且仍然需要在几个地方保留选择。实际上,我希望整个文档的默认行为都是不可选的,为此我在样式表中设置了以下内容:

* {
    -o-user-select: none;
    -webkit-user-select: none;
    -moz-user-select: -moz-none;
    -khtml-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

在Firefox 4、Chrome 7和Safari 5中一切都很好,只有IE9和Opera 10.62不如我所愿。有什么想法吗?

PS:我瞄准的是现代浏览器。


请参见:https://dev59.com/pnRA5IYBdhLWcg3wyRF6 - mahalie
5个回答

7

1
是的,但这并不好,因为它只是隐藏了选择。你仍然可以拖动选择并复制它。 - Tower
1
将-user-select属性和unselectable结合使用在跨浏览器中对我非常有效。 - ajcw
“color: currentColor” 应该改为 “color: inherit”? - acme
啊,好的,今天我学到了新东西:我不知道有 currentColor 这个关键字。 - acme
如果一个div中有一个span,并且该div具有渐变作为背景颜色,那么span内的文本是否仍然有效? - SexyBeast
显示剩余3条评论

4

2

user-select不是标准的CSS3属性,因此没有user-select、-o-user-select或-ms-user-select。它曾经在旧的用户界面规范中,但被基本UI规范取代了。除非它被添加回规范中,否则两个浏览器都不太可能实现它。

用户选择是一种行为而不是样式,因此最好使用JavaScript。正如Knu上面提到的那样,你可以使用unselectable代替。


3
但糟糕的是,孩子们不会继承“unselectable”。因此,我需要为几乎所有的东西手动应用它。我有一个带有文本的应用程序,并且默认情况下我希望所有内容都不能选择。只有当我特别想要选择时,我才会定义它们。这种方法无法使用“unselectable”实现。另外,如果你在那个元素上开始选择,该属性就会起作用。Ctrl + A等命令将与“unselectable”一起工作。 - Tower
实际上,Opera确实有-o-user-select。不确定是哪个版本,但我认为10.6有它。 - Tim Down
1
@Tim Down:我非常确定Opera不支持-o-user-select。它没有列在我们的规范http://www.opera.com/docs/specs/presto29/css/o-vendor/中,并且在Opera Dragonfly中也没有显示出来。 - David Storey
@dstorey:一个快速测试表明你是对的:http://jsfiddle.net/MguY2/。我之前进行过测试,认为它是被支持的,但看来我错了。 - Tim Down
3
-ms-user-select 存在于IE10中,而不是IE9。 - McTrafik

0

使用jQuery:

$('.element').mousedown( function(e) {
    e.preventDefault();
});

但是您可能需要将其添加到元素和其容器中。


0

-ms-user-select: none;

现在似乎可以正常工作了(IE 10/11)


哇!我以为IE11应该支持官方标准,而不需要浏览器特定的hack!当他们引入对此的支持时,为什么不直接使用标准而不是浏览器前缀??!!(是的-我在IE 11中进行了测试;只有带有“-ms-”前缀才能正常工作) - awe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接