在 Firefox 中单击鼠标时无法选择所有输入元素文本

Having trouble selecting all input element text on mouse click in Firefox

最近 IE/Chrome 我在以下方面取得了巨大成功:

<input value="Test"/>
<script>
require(["dojo/on", "dojo/query", "dojo/domReady!"], function(on, query){
    var blah = query("input")[0];
    on(blah, "focus", function(e){
   this.setSelectionRange(0,9999);
});
});
</script>

目的是 select 输入元素中的所有文本,当他们点击它时(就像它如何 select 默认情况下跳入时所有文本),所以当他们开始输入时它会删除其中的内容并重新开始。

但是,在 Firefox 中(还有 SeaMonkey),即使使用上面的代码,有时也会取消select鼠标上的文本,并恢复到默认情况,将插入符号放在用户点击的位置,select什么都没有。您将始终看到文本至少在一瞬间全部 selected。

我能做什么?有什么建议吗?

请在此处查看 fiddle:

http://jsfiddle.net/avxra2q2/11/

我真的不明白为什么在 firefox 中会发生这种情况,我还在 jquery 中测试了你在做什么以及 MDN(Mozilla Developer network)推荐的方式,因此我我会假设这是一个错误。

但我为您提供了一个可行的临时解决方案,请在 JSfiddle 中尝试 this 我得到这个答案是因为我在浏览器方面的经验,尤其是当您使用焦点和游标时,事情并不如您所愿所以浏览器需要一些时间。

你也可以看看下面的代码

require(["dojo/on", "dojo/query","dojo/has", "dojo/sniff", "dojo/domReady!"], function(on, query,has,sniff){
    var blah = query("input")[0];
    on(blah, "focus", function(e){

        if(has("ff")){ // only firefox 
       var myVar = setTimeout(function(){
                      clearTimeout(myVar);
                     blah.focus();
                blah.setSelectionRange(0,9999);      
                   },150);
        }else{
              this.setSelectionRange(0,9999);
        }

});
});