9

这是我用 JS 写的图表:

http://jsfiddle.net/49FVb/

的CSS:

-moz-user-select:none;
-khtml-user-select: none;

适用于 Chrome/FF,但在 IE 中,所有元素仍然可以选择,这在拖动条形时看起来很奇怪。

如何在 IE 中使其无法选择?

4

4 回答 4

15

在 IE 中,您需要unselectableHTML 中的属性:

<div id="foo" unselectable="on">...</div>

...或通过 JavaScript 设置:

document.getElementById("foo").setAttribute("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"));
于 2010-12-15T10:34:13.287 回答
5

您可以使用 Javascript 使文本在所有浏览器中都无法选择:

document.onselectstart=new Function('return false');
function noselect(e){return false;}
function click(){return true;}
document.onmousedown=noselect;
document.onclick=click;

在这个 SO 线程中描述了另一种方法:Is there a way to make text unselectable on an HTML page?

最便宜的方法可能是<body onselectstart="return false">

最好的方法可能是使用以下 CSS:

[unselectable=on] { -moz-user-select: none; -khtml-user-select: none; user-select: none; }

并将IE 不可选择属性添加到要使其不可选择的元素(unselectable="on"在 HTML 中;element.setAttribute("unselectable","on")在 javascript 中)

查看这篇关于不可选择文本的不错的小文章

于 2010-12-15T10:18:20.833 回答
1

有一个unselectable="on"属性。

http://msdn.microsoft.com/en-us/library/ms537840%28VS.85%29.aspx

和相关的 SO 线程:有没有办法使 HTML 页面上的文本无法选择?

于 2010-12-15T10:17:41.853 回答
1

到目前为止,这似乎在 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");
}   
于 2014-03-08T16:53:08.747 回答