如何在浏览器中使用jquery禁用Ctrl + A(全选)?

Kel*_*tex 18 jquery

我试图阻止从页面复制信息(当然,对于非技术用户).我知道如何禁用使用鼠标选择文本.以下jquery代码有效:

$(function(){
  $.extend($.fn.disableTextSelect = function() {
    return this.each(function(){
      if($.browser.mozilla){//Firefox
        $(this).css('MozUserSelect','none');
      }else if($.browser.msie){//IE
        $(this).bind('selectstart',function(){return false;});
      }else{//Opera, etc.
        $(this).mousedown(function(){return false;});
      });
    });
    $('.noSelect').disableTextSelect();
});
Run Code Online (Sandbox Code Playgroud)

但是用户仍然可以使用Ctrl + A来选择整个页面.有没有解决方法呢?

Mar*_*rcx 15

这个代码适用于你想要的每个ctrl +键的组合65是'A'的ascii代码

如果你想检查'a',请添加97

$(function(){   
    $(document).keydown(function(objEvent) {        
        if (objEvent.ctrlKey) {          
            if (objEvent.keyCode == 65) {                         
                objEvent.disableTextSelect();
                return false;
            }            
        }        
    });
});    
Run Code Online (Sandbox Code Playgroud)

应该工作,我直接写它没有测试..

  • @Marcx - 感谢您回答而不是立即低估,因为您不喜欢业务需求. (5认同)
  • +1解决方案.@Keltex我认为上面评论的任何人都没有真正低估你的问题.但播出关于这种做法的评论是完全有效的,一些论点可能会告诉你的客户一些关于这种"业务需求"的技术可行性的事情. (4认同)
  • 它在Firefox 32上没有捕获ctrl + A组合键. (2认同)

ben*_*ben 6

适用于 Windows (Ctrl+A) + MacOS (CMD+A) 并使用preventDefault()代替return false

$(function(){   
  $(document).keydown(function(e) {    
    if ((e.ctrlKey || e.metaKey) && e.keyCode == 65) {
      e.preventDefault();
    }
  });
});
Run Code Online (Sandbox Code Playgroud)