添加 'WebIDE/enhance.user.js'
This commit is contained in:
		
							
								
								
									
										106
									
								
								WebIDE/enhance.user.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								WebIDE/enhance.user.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
				
			|||||||
 | 
					// ==UserScript==
 | 
				
			||||||
 | 
					// @name         WebIDE增强脚本
 | 
				
			||||||
 | 
					// @namespace    http://ide.yumc.pw/
 | 
				
			||||||
 | 
					// @version      0.1
 | 
				
			||||||
 | 
					// @description  Coding WebIDE 增强脚本
 | 
				
			||||||
 | 
					// @author       MiaoWoo
 | 
				
			||||||
 | 
					// @match        http*://ide.yumc.pw/ws/*
 | 
				
			||||||
 | 
					// @grant        none
 | 
				
			||||||
 | 
					// ==/UserScript==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(function() {
 | 
				
			||||||
 | 
					    'use strict';
 | 
				
			||||||
 | 
					    setTimeout(function (){
 | 
				
			||||||
 | 
					        window.onbeforeunload = function () { return false; }
 | 
				
			||||||
 | 
					        console.log('已阻止 Ctrl + W 关闭页面...')
 | 
				
			||||||
 | 
					    }, 1000)
 | 
				
			||||||
 | 
					    var dqKeys = function (keys, isOrder, sucFuc, cancelFuc) {
 | 
				
			||||||
 | 
					        return new dqKeys.fn.init(keys, isOrder, sucFuc, cancelFuc);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    dqKeys.fn = dqKeys.prototype = {
 | 
				
			||||||
 | 
					        'version': '1.0.0', //版本号
 | 
				
			||||||
 | 
					        'author': 'lidequan', //作者
 | 
				
			||||||
 | 
					        'rightKeys': {}, //监听的按键{key:code},code为按键对应的ascii码
 | 
				
			||||||
 | 
					        'curKeys': [], //当前按下的键
 | 
				
			||||||
 | 
					        'sucFuc': null, //完成按键的回调函数
 | 
				
			||||||
 | 
					        'cancelFuc': null, //完成按键取消后的回调函数
 | 
				
			||||||
 | 
					        'isFinsh': false, //判断是否完成按键
 | 
				
			||||||
 | 
					        'isOrder': false, //按键是否有相应的顺序
 | 
				
			||||||
 | 
					        init: function (keys, isOrder, sucFuc, cancelFuc) {
 | 
				
			||||||
 | 
					            this.rightKeys = keys;
 | 
				
			||||||
 | 
					            this.sucFuc = sucFuc;
 | 
				
			||||||
 | 
					            this.cancelFuc = cancelFuc;
 | 
				
			||||||
 | 
					            this.isOrder = isOrder;
 | 
				
			||||||
 | 
					            return this;
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        listenkeys: function () { //监听用户键盘操作
 | 
				
			||||||
 | 
					            var _self = this;
 | 
				
			||||||
 | 
					            _self.addListener('keydown', function (oEvent) {
 | 
				
			||||||
 | 
					                var aEvent = oEvent || window.event;
 | 
				
			||||||
 | 
					                if (!_self.arrayContain(_self.curKeys, oEvent.keyCode)) {
 | 
				
			||||||
 | 
					                    if (_self.isOrder && _self.getNextKey() == oEvent.keyCode) {
 | 
				
			||||||
 | 
					                        _self.curKeys.push(oEvent.keyCode);
 | 
				
			||||||
 | 
					                    } else if (!_self.isOrder) {
 | 
				
			||||||
 | 
					                        _self.curKeys.push(oEvent.keyCode);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (_self.checkResult(_self.rightKeys, _self.curKeys)) {
 | 
				
			||||||
 | 
					                    if (_self.sucFuc && !_self.isFinsh) {
 | 
				
			||||||
 | 
					                        _self.sucFuc();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    _self.isFinsh = true;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					            _self.addListener('keyup', function (oEvent) {
 | 
				
			||||||
 | 
					                var aEvent = oEvent || window.event;
 | 
				
			||||||
 | 
					                if (_self.checkResult(_self.rightKeys, _self.curKeys) && _self.isFinsh) {
 | 
				
			||||||
 | 
					                    //完成按键,又取消的事件
 | 
				
			||||||
 | 
					                    if (_self.cancelFuc) {
 | 
				
			||||||
 | 
					                        _self.cancelFuc();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                _self.curKey = _self.remove(_self.curKeys, oEvent.keyCode);
 | 
				
			||||||
 | 
					                _self.isFinsh = false;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        arrayContain: function (arr, val) { //判断数组中是否包含某个元素
 | 
				
			||||||
 | 
					            return (arr.indexOf(val) == -1) ? false : true;
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        checkResult: function (json, arr) { //判断用户是否按下监听的所有按键
 | 
				
			||||||
 | 
					            for (var i in json) {
 | 
				
			||||||
 | 
					                if (arr.indexOf(json[i]) == -1) {
 | 
				
			||||||
 | 
					                    return false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        remove: function (arr, val) { //从数组中移除某个元素
 | 
				
			||||||
 | 
					            var index = arr.indexOf(val);
 | 
				
			||||||
 | 
					            if (index > -1) {
 | 
				
			||||||
 | 
					                arr.splice(index, 1);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return arr;
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        getNextKey: function () { //获取下一次按键对应的ascii码
 | 
				
			||||||
 | 
					            for (var i in this.rightKeys) {
 | 
				
			||||||
 | 
					                if (this.curKeys.indexOf(this.rightKeys[i]) == -1) {
 | 
				
			||||||
 | 
					                    return this.rightKeys[i];
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        addListener: function (ev, fn, bool) { //事件绑定
 | 
				
			||||||
 | 
					            if (document.attachEvent) {
 | 
				
			||||||
 | 
					                document.attachEvent('on' + ev, fn);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                document.addEventListener(ev, fn, bool);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    dqKeys.fn.init.prototype = dqKeys.fn;
 | 
				
			||||||
 | 
					    dqKeys({'alt':18,'w':87}, true, function(){
 | 
				
			||||||
 | 
					    },function(){
 | 
				
			||||||
 | 
					        document.getElementsByClassName('tab-label active')[0].childNodes[2].childNodes[0].click();
 | 
				
			||||||
 | 
					    }).listenkeys();
 | 
				
			||||||
 | 
					})();
 | 
				
			||||||
		Reference in New Issue
	
	Block a user