CSDN快捷键

自定义CSDN快捷键,使用快捷键在CSDN博客编辑页面中快速输入的自定义内容

目前为 2022-02-17 提交的版本。查看 最新版本

// ==UserScript==
// @name         CSDN快捷键
// @namespace    http://tampermonkey.net/
// @version      0.1.3
// @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```");
    } else if (
      event.ctrlKey &&
      event.altKey &&
      event.keyCode == getKeyCode("p")
    ) {
      //alert("ctrl + alt + p");
      insertHtmlAtCaret("```python\n\n```");
    } else if (
      event.ctrlKey &&
      event.altKey &&
      event.keyCode == getKeyCode("c")
    ) {
      //alert("ctrl + alt + c");
      insertHtmlAtCaret("```c\n\n```");
    }else if (
      event.ctrlKey &&
      event.altKey &&
      event.keyCode == getKeyCode("s")
    ) {
      //alert("ctrl + alt + s");
      insertHtmlAtCaret("```javascript\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);
  }
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址