`
chengyu2099
  • 浏览: 459784 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

js 快捷键 使用

 
阅读更多
<script type="text/javascript" src="<%=path %>/js/Keymap.js"></script> 

 //打开我的应用 快捷键组合
	  var docKeymap = new Keymap();
	  docKeymap.bind("ctrl_n", function()
	  {
	  	newAppDialog();
	  });


Keymap.js


function Keymap(bindings) {
  this.map = {};
  if(bindings) {
    for(var name in bindings) this.map[name.toLowerCase()] = bindings[name];  
  }
}  
Keymap.keyCodeToFunctionKey = { 
  8 : "backspace", 9 : "tab", 13 : "return", 19 : "pause", 27 : "escape",  
  32 : "space", 33 : "pageup", 34 : "pagedown", 35 : "end", 36 : "home",  
  37 : "left", 38 : "up", 39 : "right", 40 : "down", 44 : "printscreen",  
  45 : "insert", 46 : "delete", 112 : "f1", 113 : "f2", 114 : "f3",  
  115 : "f4", 116 : "f5", 117 : "f6", 118 : "f7", 119 : "f8", 120 : "f9",  
  121 : "f10", 122 : "f11", 123 : "f12", 144 : "numlock", 145 : "scrolllock"  
};
Keymap.keyCodeToPrintableChar = {
  48 : "0", 49 : "1", 50 : "2", 51 : "3", 52 : "4", 53 : "5", 54 : "6",
  55 : "7", 56 : "8", 57 : "9", 59 : ";", 61 : "=", 65 : "a", 66 : "b",
  67 : "c", 68 : "d", 69 : "e", 70 : "f", 71 : "g", 72 : "h", 73 : "i",
  74 : "j", 75 : "k", 76 : "l", 77 : "m", 78 : "n", 79 : "o", 80 : "p",
  81 : "q", 82 : "r", 83 : "s", 84 : "t", 85 : "u", 86 : "v", 87 : "w",
  88 : "x", 89 : "y", 90 : "z", 107 : "+", 109 : "-", 110 : ".", 188 : ",",
  190 : ".", 191 : "/", 192 : "'", 219 : "[", 220 : "\\", 221 : "]",
  222 : "\""
};
Keymap.prototype.bind = function(key, fn) {
  this.map[key.toLowerCase()] = fn;
};
Keymap.prototype.unbind = function(key) {
  delete this.map[key.toLowerCase()];
};
Keymap.prototype.install = function(element) {
  var keymap = this;
  function handler(event) {return keymap.dispatch(event);}
  if(element.addEventListener) {
    element.addEventListener("keydown", handler, false);
    element.addEventListener("keypress", handler, false);
  } else if(element.attachEvent) {
    element.attachEvent("onkeydown", handler);
    element.attachEvent("onkeypress", handler);
  } else {
    element.onkerdown = handler;
  }
};
Keymap.prototype.dispatch = function(event) {
  var e = event || window.event;
  var modifiers = "";
  var keyname = null;
  if(e.type == "keydown") {
    var keyCode = e.keyCode;
    if(keyCode == 16 || keyCode == 17 || keyCode == 18) return;
    keyname = Keymap.keyCodeToFunctionKey[keyCode];
    if(!keyname && (e.altKey || e.ctrlKey)) keyname = Keymap.keyCodeToPrintableChar[keyCode];
    if(keyname) {
      if(e.altKey) modifiers += "alt_";
      if(e.ctrlKey) modifiers += "ctrl_";
      if(e.shiftKey) modifiers += "shift_";
    } else {
      return;
    }
  } else if(e.type == "keypress") {
    if(e.altKey || e.ctrlKey) return;
    if(e.charCode != undefined && e.charCode == 0) return;
    var keyCode = e.charCode || e.keyCode;
    keyname = String.fromCharCode(keyCode);
    var lowercase = keyname.toLowerCase();
    if(keyname != lowercase) {
      keyname = lowercase;
      modifiers += "shift_";
    }
  }
  var fn = this.map[modifiers + keyname] || this.map["default"];
  if(fn) {
    var target = e.target || e.srcElement;
    fn(target, modifiers + keyname, e);
    if(e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true;
    if(e.preventDefault) e.preventDefault(); else e.returnValue = false;
    return false;
  }
};
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics