1

在 Firefox 中似乎很好,Chrome 和 Internet Explorer 的文本仍然是可选的,有什么办法解决这个问题吗?该代码取自另一个问题(我现在找不到)所以它可能已经过时了?

// Prevent selection
function disableSelection(target) {
    if (typeof target.onselectstart != "undefined") // Internet Explorer route
        target.onselectstart = function() { return false }
    else if (typeof target.style.MozUserSelect != "undefined") // Firefox route
        target.style.MozUserSelect = "none"
    else // All other routes (for example, Opera)
        target.onmousedown = function() { return false }
}

在代码中用作:

disableSelection(document.getElementById("gBar"));
4

4 回答 4

1

对于 webkit 使用khtmlUserSelect而不是MozUserSelect.

在 Opera 和 MSIE 中,您可以将 unselectable-property 设置为“On”

由于与 gecko/webkit 相关的两种样式都是 CSS,您可以使用一个类来应用它:

<script type="text/javascript">
<!--
function disableSelection(target)
{
  target.className='unselectable';
  target.setAttribute('unselectable','on');
}
//-->
</script>
<style type="text/css">
<!--
.unselectable{
-moz-user-select:none;
-khtml-user-select: none;
}
-->
</style>

注意:unselectable 不会传递子元素,所以如果你在 target 中除了 textNodes 之外还有其他东西,你需要你已经为 MSIE/opera 提供的解决方法。

于 2010-11-30T10:07:20.067 回答
1

以上所有示例都太复杂了..基于浏览器版本。我得到了简单的解决方案......适用于所有浏览器!

// you can select here which html element you allow to be selected
var ExcludeElems = ["INPUT","SELECT","OPTION"]



function disableSelection (target) {
   // For all browswers code will work .....
   target.onmousedown = function (e) 
  {
     var i;
     var e = e ? e : window.event;

     if (e) 
      for (i=0; i<ExcludeElems.length;i++)
        if (e.target.nodeName == ExcludeElems[i] ) 
           return true;
     return false;
  }

如果需要,可以使此功能更复杂。将此代码用于任何容器元素...

disableSelection (document) 
//disableSelection (document.body) 
//disableSelection (divName) ....
于 2014-02-24T21:27:10.850 回答
0

像 Firefox 中的 MozUserSelect 样式一样,您可以将-webkit-user-select: none其用于基于 Webkit 的浏览器(如 Safari 和 Chrome)。

我认为你可以-o-user-select: none在 Opera 中使用。但我还没有测试过。

// Prevent selection
function disableSelection(target) {
    if (typeof target.onselectstart != "undefined") //IE route
        target.onselectstart = function() { return false }
    else if (typeof target.style.userSelect != "undefined") //Some day in the future?
        target.style.userSelect = "none"
    else if (typeof target.style.webkitUserSelect != "undefined") //Webkit route
        target.style.webkitUserSelect = "none"
    else if (typeof target.style.MozUserSelect != "undefined") //Firefox route
        target.style.MozUserSelect = "none"
    else //All other route (ie: Opera)
        target.onmousedown = function() { return false }
}

对于 IE,也许这可以帮助你:http: //msdn.microsoft.com/en-us/library/ms534706 (VS.85).aspx

于 2010-11-30T10:09:28.773 回答
0

对于 Wekbit(例如 Chrome 和 Safari),您可以添加:

else if (typeof target.style.webkitUserSelect != "undefined") // Webkit route
    target.style.webkitUserSelect = "none";

对于 IE,使用“不可选择”:

else if (typeof target.unselectable != "undefined") // IE route
    target.unselectable = true;

参考:http ://help.dottoro.com/ljrlukea.php

于 2010-11-30T10:15:27.767 回答