2013-02-20 4 views
1

Это, по-видимому, дубликат, но читайте, потому что это не совсем так ... Я думаю ... :) Я последовал за ответом здесь: How do I disable text selection with CSS or JavaScript? с завихрением. Я хочу, чтобы отключить выбор программно для определенных полей, и я делаю это в Chrome с:Отключить выбор текста CSS программно

node.style.webkitUserSelect="none"; 

, который работает отлично. Тем не менее, я попробовал следующее для Firefox:

node.style.mozUserSelect="none"; 

Но это не сработает. Я не пробовал ни с каким другим браузером. Есть ли другой способ сделать это? И это «документально стандарт», что все правила CSS, как это:

.rule { 
    some-css-selector: value; 
} 

переводимые на JavaScript, как следующий?

node.style.someCssSelector="value"; 

Или это просто удача, что в некоторых случаях это работает?

+0

Попробуйте сделать это на несколько других браузерных конкретных атрибутов CSS3 стилей. Я думаю, что выбор пользователя - это то, что реализовано так по-разному между браузерами. Например, попробуйте это для радиуса границы и сообщите нам, что вы найдете. Надеюсь, это обеспечит некоторое понимание этой проблемы. – andyzinsser

ответ

4

С префиксами свойств префикс начинается с заглавной буквы, так node.style.MozUserSelect="none";

+0

Работал как очарование! Благодаря! Для записи я также изменил код crome на node.style.WebkitUserSelect = "none"; и он все еще работает. Так, как вы говорите, свойства с префиксом должны начинаться с заглавной буквы, просто кажется, что хром был немного более терпимым. –

2

Один из вариантов, чтобы создать стиль CSS, а затем программно добавить этот класс к элементам вы желаете:

HTML

<div id="container"> 
    This is some text that should not be selectable! 
</div> 

CSS

.noselect { 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 

JS

var container = document.getElementById("container"); 
container.className += " noselect"; 

jsfiddle

+0

А, это умно ... Однако в этом конкретном случае по разным причинам, которые могут или могут не продумайте, я бы хотел воздержаться от использования классов в файле CSS. –

Смежные вопросы