Javascript 在IE中使事物不可选择
这是我用JS写的图表: css:Javascript 在IE中使事物不可选择,javascript,cross-browser,selectable,Javascript,Cross Browser,Selectable,这是我用JS写的图表: css: -moz-user-select:none; -khtml-user-select: none; 适用于Chrome/FF,但在IE中,所有元素仍然可以选择,这在拖动条时看起来很奇怪 如何在IE中使其不可选择 有一个unselectable=“on”属性 和相关SO线程:您可以使用Javascript使文本在所有浏览器中都不可选择: document.onselectstart=new Function('return false'); function
-moz-user-select:none;
-khtml-user-select: none;
适用于Chrome/FF,但在IE中,所有元素仍然可以选择,这在拖动条时看起来很奇怪
如何在IE中使其不可选择 有一个
unselectable=“on”
属性
和相关SO线程:您可以使用Javascript使文本在所有浏览器中都不可选择:
document.onselectstart=new Function('return false');
function noselect(e){return false;}
function click(){return true;}
document.onmousedown=noselect;
document.onclick=click;
本SO线程中描述了另一种方法:
最便宜的方法可能是
不过,最好的方法可能是使用以下CSS:
[unselectable=on] { -moz-user-select: none; -khtml-user-select: none; user-select: none; }
并将添加到要使其不可选择的元素中(HTML中的unselectable=“on”
;javascript中的element.setAttribute(“unselectable”,“on”)
)
看看这个漂亮的图标。在IE中,您需要HTML中的
不可选择属性:
<div id="foo" unselectable="on">...</div>
需要注意的是,不可选择性不是由不可选择元素的子元素继承的。这意味着您必须在
中的每个元素的开始标记中放置一个属性,或者使用JavaScript递归地为元素的后代执行此操作:
function makeUnselectable(node) {
if (node.nodeType == 1) {
node.setAttribute("unselectable", "on");
}
var child = node.firstChild;
while (child) {
makeUnselectable(child);
child = child.nextSibling;
}
}
makeUnselectable(document.getElementById("foo"));
到目前为止,这似乎在Chrome和IE11中运行良好,使用JQuery
function fMakeNodeUnselectable(node){
$(node).css({"cursor":"default","-moz-user-select":"-moz-none","-khtml-user-select":"none","-webkit-user-select":"none","-o-user-select":"none","user-select":"none"});
$(node).attr("unselectable","on");
}
要让fiddle正常工作,需要将其设置为Nowrap(body),并且没有库(纯JS)在IE的较新版本中没有尝试过它,但它在MSDN中指定,可能是贬值的。非常棒的东西!在jquery中:$('#foo').attr(“unselectable”,“on”);问题是IE,你的解决方案是Chrome?
function fMakeNodeUnselectable(node){
$(node).css({"cursor":"default","-moz-user-select":"-moz-none","-khtml-user-select":"none","-webkit-user-select":"none","-o-user-select":"none","user-select":"none"});
$(node).attr("unselectable","on");
}