2013-05-07 135 views
0

我试图覆盖文本选择IE 10,使用CSS,对于不可选择属性元素=“上”,但下面的CSS规则似乎没有工作:如何在IE10中用css覆盖unselectable =“on”?

-MS-用户选择:文字重要! ;

如果一个元素具有unselectable =“on”,IE10将忽略该css覆盖,即使它具有!重要。尽管如此,如果用户使用unselectable =“on”开始元素的“外部”选择,那么该元素内容可以被选择,虽然这对于父元素没有可选内容时没有帮助,但是在那个情况下,具有unselectable =“on”的元素的内容实际上是不可选择的。

这里是一个简单的测试用例(对于IE10): http://jsfiddle.net/svysK/

<html><head> 
<style> 
.maincontainer, .innercontainer { 
    -ms-user-select: text !important; 
} 
<style></head><body> 
<div class="maincontainer">some text<div class="innercontainer" unselectable="on">inner text</div></div> 
</body></html> 
  • 的 “内部文本” 单击并拖动:光标改变,但文字是不可选的(这就是我的问题)。
  • 单击拖动“某些文字”:光标变化,文字可选。
  • 点击“拖动”某些文本“和”内部文本“:光标改变,所有文本都可以选择。

任何想法,如果有这种行为的解决方法? (不使用JavaScript来更改属性值,如果可能的话)

感谢您的关注, 最好的问候, 奥利弗

回答

1

CSS和元素的造型!“重要”的工作,并不能覆盖属性值。因此,IE10可能会决定,由于属性“不可选择”在那里,因此无论选择何种样式,该元素均不应选择。

您需要删除该属性,也许使用jQuery。

$(".innercontainer").removeAttr("unselectable"); 
+0

虽然你的答案在技术上是正确的,但我更喜欢非JavaScript方法。如果没有人找到一些神奇的伏都教解决方案,我会给你一个观点。 – user2286522 2013-05-07 08:29:24

+0

我有点猜测你可能不喜欢那个为什么我用“也许”这个词的javascript。也许你可以访问页面的代码(C#,PHP等),你可以删除那里的属性? – Bazzz 2013-05-07 08:57:58

+0

好吧,在我的情况下,HTML是由Ext生成的,所以我当然可以重写Ext代码,但是如果有更简单的解决方法,我宁愿避免这种麻烦,但是由于我们亲爱的M $朋友,解决方法不是工作了:) – user2286522 2013-05-07 10:33:46