From a4468e88384ea55dd61492479b569d042c7cbd2e Mon Sep 17 00:00:00 2001 From: 502647092 Date: Tue, 15 May 2018 17:21:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20'WebIDE/enhance.user.js'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebIDE/enhance.user.js | 106 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 WebIDE/enhance.user.js diff --git a/WebIDE/enhance.user.js b/WebIDE/enhance.user.js new file mode 100644 index 0000000..d7210cd --- /dev/null +++ b/WebIDE/enhance.user.js @@ -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(); +})();