自定义CSDN快捷键,使用快捷键在CSDN博客编辑页面中快速输入的自定义内容
目前為
// ==UserScript==
// @name CSDN快捷键
// @namespace http://tampermonkey.net/
// @version 0.1.1
// @description 自定义CSDN快捷键,使用快捷键在CSDN博客编辑页面中快速输入的自定义内容
// @author myaijarvis
// @match https://editor.csdn.net/md/?*
// @grant none
// ==/UserScript==
(function () {
"use strict";
// JS监听键盘快捷键【65到90:a到z(A到Z)】
document.addEventListener("keydown", function (event) {
// console.log(event.ctrlKey, event.altKey);
// console.log(event.keyCode);
// console.log(getKeyCode("j"));
//判断是否按下快捷键ctrl + alt + j
if (event.ctrlKey && event.altKey && event.keyCode == getKeyCode("j")) {
//alert("ctrl + alt + j");
insertHtmlAtCaret("```java\n\n\n```");
} else if (
event.ctrlKey &&
event.altKey &&
event.keyCode == getKeyCode("p")
) {
//alert("ctrl + alt + p");
insertHtmlAtCaret("```python\n\n\n```");
}
});
})();
/**
* 返回字符串代表的keyCode(数值型)
* @param {字符串} str
* @returns
*/
function getKeyCode(str) {
return str.toUpperCase().charCodeAt();
}
/**
* 在光标处插入内容
* @param {字符串} html
*/
function insertHtmlAtCaret(html) {
var sel, range;
if (window.getSelection) {
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
var el = document.createElement("div");
el.innerHTML = html;
var frag = document.createDocumentFragment(),
node,
lastNode;
while ((node = el.firstChild)) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
// Preserve the selection
if (lastNode) {
range = range.cloneRange();
range.setStartAfter(lastNode);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
}
} else if (document.selection && document.selection.type != "Control") {
// IE < 9
document.selection.createRange().pasteHTML(html);
}
}