Greasy Fork is available in English.
网上学院函数库:优化视频
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/395994/771240/wsxy_handlePlayer.js
// ==UserScript==
// @name wsxy_handlePlayer
// @namespace Vionlentmonkey
// @version 0.2.1
// @description 网上学院函数库:优化视频
// ==/UserScript==
const killFlash = () => {
const html5Player = document.getElementById('course_player5'); // 旧播放器
const video_media = document.getElementById('video_media'); // 新播放器
unsafeWindow.alert = message => {
GM_notification(message, 'Alert');
unsafeWindow.console.log(message);
};
if (video_media) {
// 新播放器用 confirm 询问是否继续学习,阻塞脚本运行,可选择跳过这类课程或暴力覆盖函数。
// 若跳过这类课程较为妥当,通过 iframe 源代码可以明显看到不同
// 测试例:http://218.94.1.175:8087/sfxzwsxy/jypxks/modules/train/ware/course_ware_view.jsp?applyPk=3063755&courseType=1
// 有待加入选项
unsafeWindow.confirm = message => {
if (message === '是否继续学习?') {
unsafeWindow.console.log(message);
return true;
} else {
GM_notification(message, 'Confirm');
unsafeWindow.console.log(message);
return true;
}
};
console.log('hacked');
if (GM_config.get('muted')) {
video_media.querySelector('video').muted = true;
// https://developer.mozilla.org/docs/Web/Guide/Events/Media_events
// 此处不支持用 .next(clearInterval(...))
video_media.querySelector('video').play();
}
} else if (html5Player) {
console.log('旧播放器');
// 静音模式下自动播放无需用户授权
// https://developer.mozilla.org/docs/Web/Media/Autoplay_guide#Autoplay_availability
if (GM_config.get('muted')) {
html5Player.muted = true;
// 此处支持 .next(clearInterval(...)),但不取消可以保证持续播放,即使用户点击页面也不影响。
html5Player.play();
}
} else {
// 旧版本播放器能否成功调用 HTML5 似乎是玄学问题,检测不到 HTML5 播放器则刷新。
location.reload(true);
}
};
const autoBegin = () => {
// 自动从课程封面进入播放页面
if (document.querySelector('img[src="courseware/iconImg/z3.png"]')) {
document.querySelector('img[src="courseware/iconImg/z3.png"]').click();
}
// 老播放器对话框手动点击即暂停,新版的无法模拟点击但手动点击不影响后台播放
if (document.getElementById('cancel')) {
//document.getElementById('confirm').click(); // 继续学习;可能需要多次重复才能完成一课时。
document.getElementById('cancel').click(); // 大侠还请重新来过
}
};
const autoQue = () => {
// 旧播放器自动做题,找不到测试例进一步优化。
if (document.querySelectorAll('div.option>label>input[name="que"]').length > 0) {
document.querySelectorAll('div.option>label>input[name="que"]')[0].click();
document.querySelectorAll('div.option>label>input[name="que"]')[1].click(); // 兼容多选题
document.getElementsByClassName('button')[0].click(); // 提交
if (document.getElementsByClassName('button_xia').length === 1) {
document.getElementsByClassName('button_xia')[0].click(); // 下一题
}
if (document.getElementsByClassName('button_wan').length === 1) {
document.getElementsByClassName('button_wan')[0].click(); // 完成
}
// .click() 有反向操作风险
document.getElementById('course_player5').play();
}
};