Greasy Fork

Greasy Fork is available in English.

XJTU思源学习空间课程回放体验优化

原回放网址http://ispace.xjtu.edu.cn/course/16777/learning-activity太坑了, 用了iframe嵌入*://v.ispace.xjtu.edu.cn/replay-frame/*, 导致获取不到元素, 解决方法就是将脚本作用于*://v.ispace.xjtu.edu.cn/replay-frame/*, 油猴检测到iframe, 也会起作用

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        XJTU思源学习空间课程回放体验优化
// @namespace   zaqai
// @match       *://v.ispace.xjtu.edu.cn/replay-frame/*
// @grant       none
// @version     1.0
// @author      zaqai
// @description 原回放网址http://ispace.xjtu.edu.cn/course/16777/learning-activity太坑了, 用了iframe嵌入*://v.ispace.xjtu.edu.cn/replay-frame/*, 导致获取不到元素, 解决方法就是将脚本作用于*://v.ispace.xjtu.edu.cn/replay-frame/*, 油猴检测到iframe, 也会起作用
// @license     MIT
// ==/UserScript==


  'use strict'
  // 创建一个点击事件处理函数
  function simulateClick() {
    // 选择要点击的元素
    var elementToClick = document.querySelector("#multi-player > div.mvp-player-controls > div.mvp-controls-left-area > button > i");

    // 创建一个鼠标点击事件
    var clickEvent = new MouseEvent('click', {
      bubbles: true,
      cancelable: true,
      view: window
    });

    // 触发点击事件
    elementToClick.dispatchEvent(clickEvent);
  }

// 监听键盘事件
  document.addEventListener('keydown', function(event) {
    // 检查是否按下的是空格键(键码为32)
    if (event.keyCode === 32) {
    // 阻止默认行为(防止空格键触发滚动)
    event.preventDefault();
      // 调用 simulateClick() 函数
      simulateClick();
    }
  });

// 设置定时器等待iframe加载完成
var timer = setInterval(function() {
  var targetElement = document.querySelector("#multi-player > div.mvp-videos-box");
  if (targetElement) {
    console.log("找到了指定的元素:", targetElement);
    clearInterval(timer);
    targetElement.addEventListener('click', simulateClick);
  }else {
    console.log("未找到指定的元素。");
  }
}, 3000); // 每隔一秒钟尝试一次获取元素