使 IE 中的东西无法选择

IT技术 javascript cross-browser selectable
2021-03-15 07:18:31

这是我用 JS 编写的图表:

http://jsfiddle.net/49FVb/

css:

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

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

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

4个回答

在 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"));
很棒的东西!在 jquery 中: $('#foo').attr("unselectable", "on");
2021-04-22 07:18:31

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

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

此 SO 线程中描述了另一种方法:是否有一种方法可以使 HTML 页面上的文本无法选择?

最便宜的方法可能是 <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 中)

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

没有尝试在IE的新版本,但它在MSDN规定,也许它贬值。
2021-04-21 07:18:31

到目前为止,这似乎在 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");
}   
问题是针对 IE 的。你的解决方案是 Chrome?
2021-05-03 07:18:31