2010-12-15 14 views
7

Oto mój wykres Pisałem w JS:tworzenie rzeczy Nie można wybrać w IE

http://jsfiddle.net/49FVb/

CSS:

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

działa prawidłowo dla Chrome/FF, ale w IE wszystko elementy wciąż są do wyboru, co wygląda dziwnie podczas przeciągania pasków.

Jak mogę uniemożliwić wybór w IE?

+0

aby uzyskać skrzypce do pracy to musi być ustawiony na nowrap (korpus), a nie Library (czysty JS) –

Odpowiedz

14

W IE trzeba atrybut unselectable w HTML:

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

... lub ustawić go za pośrednictwem JavaScript:

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

Rzecz aby mieć świadomość, że nie jest unselectableness odziedziczone przez dzieci elementu nie do wybrania. Oznacza to, że albo trzeba umieścić atrybut w znaczniku początku każdego elementu wewnątrz <div> lub użyć JavaScript, żeby zrobić to rekursywnie dla potomnych elementu za:

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

funkcja rekursywna działa przyjemność, dzięki! –

+2

Doskonałe rzeczy! I w jquery: $ ("# foo"). Attr ("nie można wybrać", "on"); –

5

Można użyć JavaScript, aby tekst Nie można wybrać we wszystkich przeglądarkach:

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

Innym sposobem jest opisane w tym SO wątku: Is there a way to make text unselectable on an HTML page?

Najtańszy sposób prawdopodobnie jest <body onselectstart="return false">

Najlepszym sposobem jest jednak ewentualnie stosując następujący CSS:

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

i dodać IE unselectable property do elementów, które chcesz zrobić Nie można wybrać (unselectable="on" w HTML; element.setAttribute("unselectable","on") w javascript)

Sprawdź to ładne small article about unselectable text.

+1

nie można wybrać na po prostu nie działa dla mnie w ogóle –

+0

onmousedown = "noselect" działa świetnie, ale dzięki –

+0

nie wypróbowałem go w nowszych wersjach IE, ale ** jest ** określone w MSDN, być może, stracił na wartości. –

1

To wydaje się działać dobrze w Chrome i IE11 tak daleko, przy użyciu 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"); 
} 
+1

Pytanie dotyczyło IE. Twoim rozwiązaniem jest Chrome? – Scott

Powiązane problemy