您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
To learn more faster and efficiently
当前为
// ==UserScript== // @name Focus always and replay if video is paused // @name:zh-TW 始終保持焦點並在視頻暫停時自動播放 // @namespace http://tampermonkey.net/ // @version 0.3 // @description To learn more faster and efficiently // @description:zh-tw 此腳本旨在提高在線學習效率,透過自動保持視頻播放視窗的焦點並在視頻暫停時自動重播。適用於 `https://iedu.foxconn.com/*` 網站,能夠確保學習過程中視頻連續播放,無需手動干預,特別適合忙碌且希望提高學習效率的用戶。 // @author pjiaquan // @match https://iedu.foxconn.com/* // @run-at document-start // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // Object to store video filenames mapped to wares names // Object to store video data // script2 functionality window.onblur = null; window.blurred = false; document.hasFocus = () => true; window.onFocus = () => true; [ "hidden", "mozHidden", "msHidden", "webkitHidden" ].forEach(prop_name => { Object.defineProperty(document, prop_name, {value: false}); }); Object.defineProperty(document, "visibilityState", {get: () => "visible"}); Object.defineProperty(document, "webkitVisibilityState", {get: () => "visible"}); document.onvisibilitychange = undefined; var event_handler = (event) => { if (["blur", "mouseleave", "mouseout"].includes(event.type) && (event.target instanceof HTMLInputElement || event.target instanceof HTMLAnchorElement || event.target instanceof HTMLSpanElement)) { return; // exclude input, anchor, and span elements } event.preventDefault(); event.stopPropagation(); event.stopImmediatePropagation(); }; [ "visibilitychange", "webkitvisibilitychange", "blur", "hasFocus", "mouseleave", "mouseout", "mozvisibilitychange", "msvisibilitychange" ].forEach(event_name => { window.addEventListener(event_name, event_handler, true); document.addEventListener(event_name, event_handler, true); }); let videoData = { filename: null, waresMap: new Map() }; // script1 functionality function updateVideoProgress() { console.log('Check is playing or not'); if (window.wares && window.wares.length > 0) { //console.log("wares array found and not empty:", window.wares); setTimeout(() => { if (!isVideoPlaying()) { console.log('start!'); startPlayingVideo(); } }, 5000); } else { console.log("wares array not found or is empty"); } } function setupVideoCheck() { //console.log('Page loaded, running script'); setInterval(updateVideoProgress, 5000); } function isVideoPlaying() { var videoElement = document.getElementById('realvideo_html5_api'); if (videoElement && videoElement.tagName === 'VIDEO') { console.log(videoElement); // Extract the src attribute var videoSrc = videoElement.getAttribute("src"); // Extract the filename from the src URL var videoFilename = videoSrc.split('/').pop().split('.')[0]; // Save the filename to the videoData object videoData.filename = videoFilename; // Map the videoFilename with wares if needed if (window.wares && window.wares.length > 0) { window.wares.forEach((ware, index) => { videoData.waresMap.set(videoFilename, ware); // Example mapping }); } // Output the filename or save it as needed //console.log(videoFilename); // Outputs: 7740810538332280 //console.log(videoData); // Outputs: 7740810538332280 if (videoData && videoData.waresMap) { const firstEntry = videoData.waresMap.entries().next().value; if (firstEntry) { const [firstKey, firstValue] = firstEntry; console.log('First key:', firstKey); console.log('First value:', firstValue); if(firstValue.isComplete === "Y") { return true; } } else { console.log('Map is empty'); } } return !videoElement.paused; } else { console.log('Video element not found or is not a video tag'); return null; } } function startPlayingVideo() { var videoElement = document.getElementById('realvideo_html5_api'); if (videoElement && videoElement.tagName === 'VIDEO') { videoElement.play() .then(() => console.log("Video playback started")) .catch((error) => console.error("Error attempting to play video:", error)); } else { console.log('Video element not found or is not a video tag'); } } window.addEventListener('load', setupVideoCheck); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址