超星学习通 Tab 键切换富文本编辑器

在超星学习通的富文本编辑器中,按下 Tab 键时跳转到下一个输入框,而不是插入制表符。

当前为 2025-01-27 提交的版本,查看 最新版本

// ==UserScript==
// @name         超星学习通 Tab 键切换富文本编辑器
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  在超星学习通的富文本编辑器中,按下 Tab 键时跳转到下一个输入框,而不是插入制表符。
// @author       TeacherLi07
// @match        *://*.chaoxing.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
  'use strict';

  // 等待页面加载完成
  window.addEventListener('load', function () {
    // 获取所有 UEditor 实例
    var editors = Object.values(UE.instants);

    // 为每个编辑器的内容区域添加 Tab 键事件监听
    editors.forEach(function (editor, index) {
      var iframe = editor.iframe;
      if (!iframe) return;

      var doc = iframe.contentDocument || iframe.contentWindow.document;
      doc.addEventListener('keydown', function (e) {
        if (e.key === 'Tab') {
          e.preventDefault(); // 阻止默认的 Tab 行为

          // 找到下一个编辑器
          var nextIndex = (index + 1) % editors.length;
          var nextEditor = editors[nextIndex];
          var nextIframe = nextEditor.iframe;

          // 聚焦到下一个编辑器的可编辑区域
          var nextDoc = nextIframe.contentDocument || nextIframe.contentWindow.document;
          var editable = nextDoc.querySelector('[contenteditable="true"]');
          if (editable) {
            editable.focus(); // 将焦点设置到可编辑区域
          }
        }
      });
    });
  });
})();