Javascript 在IE中使事物不可选择

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

这是我用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 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");
}