禁用Opera中的select(离子)

时间:2012-07-14 15:11:53

标签: javascript css html5 browser opera

Opera让我发疯。处理选择(离子)真的是挑战。我无法禁用Opera的选择。通过鼠标或Ctrl + A选择仍然打开。 Opera真的如此糟糕,或者是否有一些解决方案或解决方法?


我的CSS:

::selection {
  background: transparent;
} 

::-moz-selection {
  background: transparent;
}

* {
  user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -o-user-select: none;            // for future? compatibility
  -webkit-user-select: none;
}

我的JavaScript:

var elements = document.getElementsByTagName('*');
for (var i = 0; i < elements.length; i++) {
  elements[i].setAttribute('unselectable', 'on');
}

没有任何帮助。请指教。

示例:(如果您有Opera可用)转到this小提琴,单击“结果”部分并按Ctrl + A.

2 个答案:

答案 0 :(得分:0)

阅读https://developer.mozilla.org/en/CSS/-moz-user-select用户选择在opera上不可用。这同样适用于Internet Explorer 9及以下版本。

http://help.dottoro.com/lhwdpnva.php描述了不可选择的方法仅适用于Internet Explorer和Opera,但仅适用于从元素开始的选择。之前开始或我猜Ctrl + A你仍然可以选择它。根据这篇文章,同样适用于Internet Explorer。

然而,我无法尝试。

答案 1 :(得分:0)

请尝试使用此脚本:

<script type="text/javascript">
    disableSelection(document.body) 
</script>

<script type="text/javascript">
    function disableSelection(target){
        if (typeof target.onselectstart!="undefined") //IE route
            target.onselectstart=function(){return false}
        else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
            target.style.MozUserSelect="none"
        else //All other route (ie: Opera)
            target.onmousedown=function(e){if(e && e.target && e.target.tagName){if(/^(input|select)$/i.test(e.target.tagName)){return true;}}return false;}
        target.style.cursor = "default"
    }
</script>

小提琴:http://jsfiddle.net/8qadwtzo/