Деактивировать выделение текста и использовать элемент выбора с Firefox 40

В моем приложении мы часто используем этот шаблон:

<select name="select" onfocus=this.select; onClick=this.focus();>
  <option value="value1" selected>Value 1</option> 
  <option value="value2">Value 2</option>
</select>

<script>
document.onmousedown = new Function("return false");
</script>

Строка document.onmousedown = new Function("return false"); предназначена для предотвращения выделения текста на странице. К сожалению, он также блокирует распространение события mousedown на элемент select. Обходной путь, который мы используем, — это обратные вызовы onfocus=this.select; onClick=this.focus();.

Моя проблема в том, что он не работает с Firefox 40: нажатие на поле выбора ничего не делает. (отлично работает с 39)

Я могу удалить строку document.onmousedown = new Function("return false");, чтобы восстановить поле выбора, но это позволит выделить текст на странице.

Мой вопрос: каковы мои варианты, чтобы иметь как рабочее поле выбора, так и неработающее выделение текста с Firefox 40?


person Sylvain Biehler    schedule 28.08.2015    source источник
comment
Разве вы не можете просто использовать CSS? -moz-user-select: none; user-select: none; (и любые необходимые префиксы поставщиков)   -  person CodingIntrigue    schedule 28.08.2015
comment
@RGraham Спасибо, я должен был сосредоточиться на том, что делать с элементом выбора, чтобы искать другие способы ...   -  person Sylvain Biehler    schedule 28.08.2015


Ответы (1)


Вы можете использовать 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;
}

Затем примените класс noselect (или как вы хотите его назвать) к любым элементам, текст которых вы не хотите выделять.

См. этот вопрос, в котором обсуждается поддержка этих различных свойств css в разных браузерах. .

person Andrew Mairose    schedule 28.08.2015