UserScript/WebIDE/enhance.user.js

95 lines
3.0 KiB
JavaScript

// ==UserScript==
// @name WebIDE增强脚本
// @namespace http://ide.yumc.pw/
// @version 0.6
// @description Coding WebIDE 增强脚本
// @author MiaoWoo
// @match http*://ide.yumc.pw/ws/*
// @match http*://ide.coding.net/ws/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var id = setInterval(function (){
if (document.getElementsByClassName('ide-container')[0]) {
window.onbeforeunload = function () { return false; }
console.log('已阻止 Ctrl + W 关闭页面...')
clearInterval(id);
}
}, 300)
var keyMapList = {
// Alt + ` 开关终端 (注意 光标在终端时 快捷键失效)
"192": {
type: 'normal',
class: "icon octicon octicon-terminal"
},
// Alt + U 拉取代码
"85": {
type: 'menu',
menu: 'menuBarItems.git.main',
class: "menu-item-icon octicon octicon-repo-pull"
},
// Alt + P 推送代码
"80": {
type: 'menu',
menu: 'menuBarItems.git.main',
class: "menu-item-icon octicon octicon-repo-push"
},
// Alt + C 项目网络
"67": {
type: 'normal',
class: "icon octicon octicon-git-commit"
},
// Alt + 1 工作树
"49": {
type: 'normal',
class: "icon octicon octicon-file-submodule"
},
// Alt + 2 工作文件
"50": {
type: 'normal',
class: "icon fa fa-folder-open-o"
}
};
function findAndClick(key) {
var keyMap = keyMapList[key];
if (keyMap) {
if (keyMap.type === "menu") { document.getElementById(keyMap.menu).click(); }
var item = document.getElementsByClassName(keyMap.class)[0];
if (item) { item.click() }
} else {
console.log(key);
}
}
document.onkeydown = function() {
var e = window.event;
switch (e.keyCode) {
case 87:
// Alt + W 关闭Tab标签页
var activeTab = document.getElementsByClassName('tab-label active')[0];
if (activeTab) {
activeTab.childNodes[2].childNodes[0].click();
}
break;
case 81:
// Alt + Q 切换Tab标签页
var currectTab = document.getElementsByClassName('tab-label active')[0];
if (currectTab) {
var tab;
if (currectTab.nextElementSibling) {
tab = currectTab.nextElementSibling;
} else {
tab = document.getElementsByClassName('tab-label')[0];
}
if (tab) {
tab.click();
}
}
break;
default:
findAndClick(e.keyCode);
}
}
})();