添加 'WebIDE/enhance.user.js'
This commit is contained in:
parent
589e2e2bd0
commit
a4468e8838
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();
|
||||||
|
})();
|
Loading…
Reference in New Issue
Block a user