2010-12-15 6 views
7
non sélectionnables

Voici mon tableau que j'ai écrit dans JS:Faire des choses dans IE

http://jsfiddle.net/49FVb/

Le css:

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

fonctionne très bien pour Chrome/FF, mais dans IE tous les éléments sont toujours sélectionnables, ce qui semble bizarre lorsque vous faites glisser les barres.

Comment puis-je rendre ceci non sélectionnable dans IE?

+0

pour obtenir le violon à travailler, il doit être réglé sur nOWRAP (corps), et No Library (pur JS) –

Répondre

14

Dans IE, vous devez l'attribut unselectable en HTML:

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

... ou le mettre via JavaScript:

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

La chose à prendre en compte est que le unselectableness n'est pas hérité par les enfants d'un élément non sélectionnable. Cela signifie que vous devez soit mettre un attribut dans la balise de début de chaque élément à l'intérieur du <div> ou utiliser JavaScript pour faire ce récursive pour les descendants d'un élément:

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

la fonction récursive fonctionne un régal, merci! –

+2

Excellente substance! Et dans jquery: $ ('# foo'). Attr ("unselectable", "on"); –

5

Vous pouvez utiliser Javascript pour rendre le texte non sélectionnable dans tous les navigateurs:

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

Une autre façon est décrite dans ce SO fil: Is there a way to make text unselectable on an HTML page?

Le moyen le moins cher est probablement <body onselectstart="return false">

La meilleure façon est bien possible en utilisant le CSS suivant:

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

et ajoutez le IE unselectable property aux éléments que vous voulez faire unselectable (unselectable="on" en HTML; element.setAttribute("unselectable","on") en javascript)

Découvrez cette belle small article about unselectable text.

+1

Le unselectable sur ne fonctionne tout simplement pas pour moi du tout –

+0

onmousedown = "noselect" fonctionne très bien, mais merci –

+0

ne l'a pas essayé dans les versions les plus récentes de IE, mais il est ** spécifié dans MSDN, peut-être l'a déprécié. –

1

Cela semble bien fonctionner dans Chrome et IE11 jusqu'à présent, en utilisant 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

La question était pour IE. Votre solution est Chrome? – Scott

Questions connexes