// ==UserScript== // @name 学习通阻止暂停播放 // @namespace https://hognbin.xyz/ // @version 0.4 // @description 学习通 // @author 宏斌 // @match https://mooc1.chaoxing.com/mycourse/* // @icon https://www.google.com/s2/favicons?sz=64&domain=chaoxing.com // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function () { 'use strict'; var video; function stopPause() { video = document.querySelectorAll('iframe')[0].contentWindow.document.querySelectorAll('iframe')[0].contentWindow.document.querySelector('video'); video.pause = () => { console.log('他想暂停播放'); } } function handleMute() { video = document.querySelectorAll('iframe')[0].contentWindow.document.querySelectorAll('iframe')[0].contentWindow.document.querySelector('video'); video.volume = 0; } const button = document.createElement('button'); button.className = 'h_Bbutton'; button.innerHTML = '阻止暂停播放'; document.body.appendChild(button); Object.assign(button.style, { width: '120px', }); const style = document.createElement('style'); style.innerHTML = ` .h_Bbutton{ transition: all 0.3s linear; position: fixed; padding: 10px; border: none; background: linear-gradient(45deg, #0219f2, #c804ea); color: #fffae5; border-radius: 5px; bottom: 30px; left: 20px; box-shadow: 8px 4px 10px 3px #ccc; cursor: pointer; font-weight: bold; } .h_Bbutton:active{ transform: translateY(2px); } .h_Bbutton:hover{ opacity:0.8; } .h_Bbutton svg path{ fill: #fffae5; } .bottom_text{ position:fixed; bottom: 0; left: 0; background-color: #51f; color:#fffae5; padding: 3px 5px; font-size: 12px; border-radius: 3px; } ` document.head.appendChild(style); button.onclick = verify(stopPause); /** * 添加静音按钮 */ const icon = `` const muteButton = document.createElement('button'); muteButton.className = 'h_Bbutton'; muteButton.innerHTML = icon; muteButton.style['left'] = '150px'; muteButton.style['padding'] = '3px'; muteButton.style['background'] = 'linear-gradient(45deg, #f50404, #e2ec0a)'; document.body.appendChild(muteButton); muteButton.onclick = verify(handleMute); const autoToggleButton = document.createElement('button'); autoToggleButton.className = 'h_Bbutton'; autoToggleButton.innerHTML = '自动切换下集'; Object.assign(autoToggleButton.style, { bottom: '80px' }) autoToggleButton.onclick = verify(autoToggleNextVideo); document.body.appendChild(autoToggleButton); function autoToggleNextVideo() { if (!video) { video = document.querySelectorAll('iframe')[0].contentWindow.document.querySelectorAll('iframe')[0].contentWindow.document.querySelector('video'); } const curr = document.querySelectorAll('h4.currents')[0] if (!curr) return console.warn('获取当前活跃item失败'); const nextA = curr.parentElement.nextElementSibling.querySelector('a'); if (!nextA) return; video.addEventListener('ended', () => { nextA.click(); }); autoToggleButton.style.display = 'none'; const nextVideoText = document.createElement('span'); nextVideoText.className = 'bottom_text'; document.body.appendChild(nextVideoText); const r = () => { nextVideoText.innerText = `下集:${nextA.children[0].innerText}`; setTimeout(r, 5000); } r(); } function verify(callback) { return () => { try { callback(); } catch (e) { console.error('出错!', e); alert('确保已经点开视频'); } } } })();