2010-12-15 4 views
7

Hier ist mein Diagramm Ich habe in JS geschrieben:Geheimniskrämerei unselectable in IE

http://jsfiddle.net/49FVb/

die CSS:

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

funktioniert gut für Chrome/FF, aber in IE alle Die Elemente sind immer noch wählbar, was komisch aussieht, wenn man die Balken umherzieht.

Wie kann ich dies im IE nicht auswählbar machen?

+0

Geige es an die Arbeit muss kein Umbruch (Körper) zu setzen, und keine Bibliothek (reine JS) –

Antwort

14

In IE, müssen Sie das unselectable Attribut in HTML:

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

... oder per JavaScript eingestellt:

document.getElementById("foo").setAttribute("unselectable", "on"); 

Die Sache bewusst zu sein, dass die unselectableness nicht ist von Kindern eines nicht auswählbaren Elements geerbt. Das heißt, Sie haben entweder ein Attribut in dem Start-Tag jedes Element setzen innerhalb der <div> oder benutzen Sie JavaScript dies für ein Element Nachkommen rekursiv zu tun:

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")); 
+0

die rekursive Funktion funktioniert ein Vergnügen, danke! –

+2

Ausgezeichnete Sachen! Und in jquery: $ ('# foo'). Attr ("nicht auswählbar", "an"); –

5

Sie Javascript verwenden können Text unselectable in allen Browsern zu machen:

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

Eine andere Art und Weise in diesem SO Thread beschrieben: Is there a way to make text unselectable on an HTML page?

Der günstigste Weg ist wahrscheinlich <body onselectstart="return false">

Der beste Weg, auch wenn sie möglicherweise wird die folgende CSS:

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

und die IE unselectable property zu den Elementen fügen Sie unselectable machen wollen (unselectable="on" in HTML; element.setAttribute("unselectable","on") in Javascript)

Schauen Sie sich diese schöne small article about unselectable text.

+1

Die unselectable auf einfach nicht für mich arbeiten an allen –

+0

onmousedown = "nosect" funktioniert gut, aber danke –

+0

habe es nicht in den neueren Versionen von IE versucht, aber es ist ** in ** angegeben MSDN, vielleicht hat es abgeschrieben. –

1

Dies scheint bisher in Chrome und IE11 gut zu funktionieren, JQuery mit ...

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"); 
} 
+1

Die Frage war für IE. Ihre Lösung ist Chrome? – Scott