取消激活文本选择并使用firefox 40选择元素

时间:2015-08-28 15:24:07

标签: javascript html firefox onmousedown

在我的应用程序中,我们经常使用这种模式:



<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>
&#13;
&#13;
&#13;

document.onmousedown = new Function("return false");行的目的是阻止页面中的文字选择。不幸的是,它还阻止了mousedown事件传播到select元素。我们使用的workarround是回调onfocus=this.select; onClick=this.focus();

我的问题是它不能与Firefox 40一起使用:点击选择框什么都不做。 (适用于39)

我可以删除行document.onmousedown = new Function("return false");来修复选择框,但它允许在页面中选择文字。

我的问题是:我可以选择使用Firefox 40同时选择工作选择框和不工作文本吗?

1 个答案:

答案 0 :(得分: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类(或任何您想要调用的类)应用于您不希望选择其文本的任何元素。

请参阅this question,讨论在不同浏览器中对这些不同css属性的支持。