一、脚本功能介绍:
WELearn随行课堂刷题脚本主要实现显示WE Learn随行课堂单元题目答案;支持班级测试;自动答题;刷时长等。
WELearn随行课堂刷题脚本支持外教社数字课程系列、新目标大学英语视听说教程、新世纪大学英语(第二版)综合教程、全新版大学进阶英语:综合教程、全新版大学进阶英语:视听说教程。
脚本使用截图效果:
嫌安装麻烦的可下载此安装好脚本的浏览器:https://wukongstudio.lanzoui.com/b01i672lg
二、声明:
1、本脚本仅供学习交流使用,对于使用本脚本造成的任何后果,均由使用者本人承担。
2、任何脚本都有风险,不做任何保证。
三、脚本安装:
1、安装最新版本的Firefox。
2、安装最新版本的Tamper Monkey。
3、在脚本列表搜索WELearn网课助手,进行安装即可。
四、使用步骤:
1、进入课程单元练习页面,如果是支持的课程,会自动显示答案,默认会显示听力、口语参考文本。
2、自动答题只支持部分课程的部分题目,默认关闭。
3、对于不支持自动答题的题目类型,直接点击答案,自动复制到粘贴板(不包含序号),手动填起来也挺快的
五、脚本主要代码:
function sleep(ms) {
return new Promise(function (resolve) {
return setTimeout(resolve, ms);
});
}
function addMessage(_x) {
return _addMessage.apply(this, arguments);
}
/**实现拖动*/
function _addMessage() {
_addMessage = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(info) {
var type,
_args = arguments;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
type = _args.length > 1 && _args[1] !== undefined ? _args[1] : "normal";
if (!(type !== "hr")) {
_context.next = 4;
break;
}
if (!(info === null || info === "")) {
_context.next = 4;
break;
}
return _context.abrupt("return");
case 4:
_global__WEBPACK_IMPORTED_MODULE_2__[/* Global */ "c"].messages.push({
info: String(info),
type: type
});
if (!_global__WEBPACK_IMPORTED_MODULE_2__[/* Global */ "c"].USER_SETTINGS.autoSlide) {
_context.next = 9;
break;
}
_context.next = 8;
return sleep(10);
case 8:
//等待message渲染完成,不然不会拉到最底
document.querySelector("#container-messages").scrollBy(0, 1000);
case 9:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _addMessage.apply(this, arguments);
}
function makeDraggable(handle, container) {
function getProperty(ele, prop) {
return parseInt(window.getComputedStyle(ele)[prop]);
}
var draggable = false,
pastX,
pastY,
containerWidth,
containerHeight,
containerLeft = getProperty(container, "left"),
containerTop = getProperty(container, "top"),
windowWidth = window.innerWidth,
windowHeight = window.innerHeight;
handle.addEventListener("mousedown", function (e) {
handle.style.cursor = "grabbing";
draggable = true;
pastX = e.clientX;
pastY = e.clientY;
containerWidth = getProperty(container, "width");
containerHeight = getProperty(container, "height");
}, false);
document.addEventListener("mousemove", function (e) {
if (draggable === true) {
var currentX = e.clientX,
currentY = e.clientY,
diffX = currentX - pastX,
diffY = currentY - pastY;
var targetX = containerLeft + diffX;
var targetY = containerTop + diffY;
if (targetX <= 0) targetX = 0;
if (targetY <= 0) targetY = 0;
if (targetX >= windowWidth - containerWidth) targetX = windowWidth - containerWidth;
if (targetY >= windowHeight - containerHeight) targetY = windowHeight - containerHeight;
container.style.left = targetX + "px";
container.style.top = targetY + "px";
}
});
handle.addEventListener("mouseup", function () {
handle.style.cursor = "grab";
draggable = false;
containerLeft = getProperty(container, "left");
containerTop = getProperty(container, "top");
}, false); //防止意外未退出拖动状态
document.body.addEventListener("keydown", function (e) {
if (e.key === "Escape") {
// console.log(e);
handle.style.cursor = "grab";
draggable = false;
containerLeft = getProperty(container, "left");
containerTop = getProperty(container, "top");
}
}, false);
}
六、其他:
最后感谢脚本作者SSmJaE 等努力付出。