在Firefox中看起来很好,Chrome和IE文本仍然可以选择,有什么方法可以解决这个问题吗?代码来自另一个问题(我现在找不到),所以它可能已经过时了?
// Prevent selection
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() { return false }
}
在代码中使用:
disableSelection(document.getElementById("gBar"));
答案 0 :(得分: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不会传递子元素,所以如果你在目标中有除textNodes之外的任何东西,你需要你已经有MSIE / opera的解决方法。
答案 1 :(得分:1)
所有上述示例都太复杂了......基于浏览器版本。 我得到了simle解决方案......适用于所有浏览器!
// 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) ....
答案 2 :(得分:0)
与Firefox中的MozUserSelect样式一样,您可以将-webkit-user-select: none
用于基于Webkit的浏览器(如Safari和Chrome)。
我认为您可以在Opera中使用-o-user-select: none
。但我还没有测试过它。
// 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
答案 3 :(得分:0)
对于Wekbit(例如Chrome和Safari),您可以添加:
else if (typeof target.style.webkitUserSelect != "undefined") // Webkit route
target.style.webkitUserSelect = "none";
对于IE,使用'unselectable':
else if (typeof target.unselectable != "undefined") // IE route
target.unselectable = true;