不会用脚本的去看我的另一篇博文:中国大学慕课mooc答题/自动播放脚本(domooc)使用教程
脚本代码如下:

// ==UserScript==
// @name         中国大学慕课mooc答题/自动播放脚本(domooc)
// @namespace    https://lolzyx.xyz/
// @version      1.9.0
// @description  自动完成你的mooc考试测验客观题,开始刷课后自动看视频、看课件、自动讨论。使用过程中会上传您的mooc账户信息(包括昵称、ID、邮箱等)以识别用户。免费用户有50初始积分,可以回答50题,使用完后需要付费充值获取积分。
// @author       ExTedic
// @match        https://www.icourse163.org/learn/*
// @match        http://www.icourse163.org/learn/*
// @match        http://www.icourse163.org/spoc/learn/*
// @match        https://www.icourse163.org/spoc/learn/*
// @connect      lolzyx.xyz
// @connect      localhost
// @grant        unsafewindow
// @grant        GM_xmlhttpRequest
// @grant        GM_getValue
// @grant        GM_setValue
// @require      http://cdn.staticfile.org/jquery/3.4.1/jquery.min.js
// @require      https://cdn.bootcss.com/jquery/3.5.0/jquery.min.js
// @run-at       document-start
// ==/UserScript==
(function() {let nopanel = false; //不显示一切信息,仅保留自动答题功能,不会显示题库答案数、答案、右侧面板,适合考试用。此模式会自动获取答案并填写,请确保您的积分充足。let usersetting = {usethis: false, //设置为true后代码里的设置将覆盖面板里的设置,即以此处usersetting里的设置为准cdkey: "", //捐赠后获取的cdkey,请直接将cdkey放在两个引号之间,不要有空格timeout: 10000, //答题延时,每两道题之间的时间间隔,单位为毫秒,1秒=1000毫秒,最短为10000autogetanswer: false, //是否开启自动获取答案,开启后每次进入测验都将向服务器请求数据,并扣除相应的积分autoanswer: true, //是否开启自动答题,需先设置autogetanswer为true此项才能生效,如果设置为false,正确答案会被标记为绿色,或在填空题旁边显示答案showanswerbtn: true, //是否在每题下面显示查看答案按钮,若设置为false则不显示查看答案按钮,并且也不会显示答案learnCourse: { //刷课时的配置video: true, //是否刷视频doc: true, //是否刷文档test: true, //是否刷随堂测验(不消耗答题次数)discuss: true, //是否刷讨论(将自动从当前页面选一条最长的评论复制粘贴,如果当前讨论还没有人发表评论则跳过)playrate: 0, //视频倍速,0表示不改变播放器的倍速}};let window = unsafeWindow;Object.defineProperty(window.EventTarget.prototype, 'addEventListener', {writable: false});String.prototype.trim2 = function() { return this.trim().replace(/\s+/g, " "); };String.prototype.trim1 = function() { return this.trim().replace(/\s+/g, ""); };String.prototype.domoocformat = function(isnew) {if (isnew) {let imgreg = /<\s*img[^>]+src\s*=\s*["'](.*?)["'][^>]*>/g;let s = this.replace(imgreg, 'dm|$1:|md');if (typeof $ === "function") {return $(`<div >${s}</div>`).text().trim2();} else {let $p = cheerio.load(`<div>${s}</div>`);return $p.text().trim2();}} else {let htmlDecode = function(str) {let s = "";if (str.length == 0) return "";s = str.replace(/&lt;/g, "<");s = s.replace(/&gt;/g, ">");s = s.replace(/&nbsp;/g, " ");s = s.replace(/&#39;/g, "\'");s = s.replace(/&quot;/g, "\"");s = s.replace(/&amp;/g, "&");return s;}let regx = /<[img ]{3,}[\S]+?[https]{3,4}:\/\/([\S]+?\.[pngjeifbm]{3,4})[\S]+?>/gi;let regx2 = /\<[\S ]+?\>/ig;return htmlDecode(this).trim1().replace(regx, "$1").replace(regx2, "");}}let name = 'qwertyuiopalkjhgfsdnxzhkmncgxhfksnzljdfgfh';function genId(c) {return name[Math.floor(Math.random() * name.length)] + (new Date()).getTime() + parseInt(Math.random() * 100000) + c;}let confuse = s => {let r = '';let confusechars = '!@#$%^&*()-_=+.~|\\/';for (let i = 0; i < s.length; i++) {r = r + (Math.random() > 0.25 ? '' : confusechars[Math.floor(Math.random() * confusechars.length)]) + s[i]}return s;}let dstrings = {stdans: confuse('参考答案:'),scorestd: confuse('评分标准'),showans: confuse('查看答案'),dbcfold: confuse('双击收起'),dbcunfold: confuse('双击展开'),cdkeycredits: confuse('CDKEY积分'),mooccredits: confuse('账号积分'),startlearncourse: confuse('开始刷课'),stoplearncourse: confuse('关闭刷课'),answerall: confuse('一键答题'),more: confuse('更多>>'),noans: confuse('无答案点此'),qqgroup: confuse('交流群:'),answeringall: confuse('正在自动进行答题...'),answerallsuccess: confuse('自动答题成功!'),answerallfail: confuse('自动答题失败!'),qbupdate: confuse('题库更新于:')}let parentDiv = (function() {let _parentdiv = null;// let selectors = ['body', '#g-container', '#g-body', '.m-learnhead', '.g-wrap', '.g-mn1', '.g-mn1c', '.g-sd1', '.m-navTop-func', '.m-navTop-func-i']let selectors = ['body'];return () => {if (!_parentdiv) {// let divs = document.querySelectorAll('body>div');_parentdiv = $(selectors[Math.floor(Math.random() * selectors.length)]);let t = Math.random() * 10 | 1;while (t-- > 0) {let div = $('<div></div>');_parentdiv.append(div);_parentdiv = div;}}return _parentdiv;}})();let domoocvideoname = genId('dh');function init(window, $, usersetting, GM_getValue, GM_setValue, GM_xmlhttpRequest, nopanel) {let scriptdata = {version: "1900",qqgroup: null,baseurl: 'https://lolzyx.xyz/',// baseurl: 'https://localhost/',debug: false,};let mintimeout = 10000; //最短答题时间间隔设置if (!usersetting.usethis) {let _usersetting = GM_getValue('usersetting');if (_usersetting !== undefined && _usersetting !== "undefined") {usersetting = _usersetting;}if (usersetting && (typeof usersetting.showanswerbtn === "undefined")) {usersetting.showanswerbtn = true;}if (usersetting.timeout < mintimeout) {usersetting.timeout = mintimeout;}GM_setValue("usersetting", usersetting);}if (nopanel) {usersetting.showanswerbtn = false;usersetting.autogetanswer = true;usersetting.autoanswer = true;}let document = window.document;let JSON = window.JSON;let version = scriptdata.version;let qqgroup = scriptdata.qqgroup;let baseurl = scriptdata.baseurl;let debug = scriptdata.debug;let tnames = {};let handledomoocRPC = genId('kshd');let getAnswer = 'getAnswer';let analysisAnswer = 'analysisAnswer';let answerClassTest = 'answerClassTest';let learnCourse = 'learnCourse';let setPage = 'setPage';let setUnitId = 'setUnitId';let _view = 'view';let showQuizbank = 'showQuizbank';let _uploadedExams = 'uploadedExams';let bindGetAnswer = "bindGetAnswer";let domooc = {getanswerbyidstr: genId('t'),get donateurl() {return `${baseurl}donate?id=${webUser.id}`},get retrievecdkeyurl() {return `${baseurl}retrievecdkey?id=${webUser.id}`},get csrf() {let name = 'NTESSTUDYSI';let arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");if (arr = document.cookie.match(reg))return unescape(arr[2]);elsereturn null;},$,$,url: {getAnswerById: baseurl + 'api/getAnswerById',getanswer: baseurl + 'api/getanswer',check: baseurl + 'api/checkcourse',userMessage: baseurl + 'api/userMessage',upsertQuizpaper: baseurl + 'api/upsertquizpaper',fastGetCourse: baseurl + 'api/fastGetCourse',getQuizInfo: "https://www.icourse163.org/dwr/call/plaincall/MocQuizBean.getQuizInfo.dwr",getLastLearnedMocTermDto: "https://www.icourse163.org/dwr/call/plaincall/CourseBean.getLastLearnedMocTermDto.dwr",getQuizPaper: "https://www.icourse163.org/dwr/call/plaincall/MocQuizBean.getQuizPaperDto.dwr"},console: {log: (msg) => { if (!!debug) window.console.log(msg) },error: (msg) => { if (!!debug) window.console.error(msg) },},utils: {getBatchID: function() {let batchId = new Date().getTime();return batchId - 500 - (Math.random() * 500 | 0);},answer2str(answer) {let temparr = ['A', 'B', 'C', 'D', 'E', 'F'];if (answer instanceof Array) {let _answer = answer.sort((a, b) => a.idx - b.idx).map(x => { return { idx: temparr[x.idx], content: x.content } });return _answer.reduce((prev, cur) => {return prev + '<br>' + cur.idx + ':' + cur.content.replace(/dm\|([\S]+?):\|md/g, '<img src="$1"/>');}, dstrings.stdans);} else {return dstrings.stdans + '<br>' + answer.replace(/dm\|([\S]+?):\|md/g, '<img src="$1"/>')}},setBlankValue(input, str) {let setValue = null;if (input.tagName.toUpperCase() === "TEXTAREA") {setValue = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, 'value').set} else if (input.tagName.toUpperCase() === "INPUT") {setValue = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set} else {throw Error("invoke element type error! ");}setValue.call(input, str);}}};GM_xmlhttpRequest({method: 'GET',url: scriptdata.baseurl + 'api/domoocstatus?version=' + scriptdata.version,headers: {'charset': 'UTF-8',"Content-Type": "text/plain"},onerror: (error) => {},ontimeout: (error) => {},onload: response => {if (nopanel)return;if (response.status == 200) {let res = JSON.parse(response.responseText);if ((typeof res.url === "string") && res.url.startsWith('http')) {window.open(res.url);} else if (res.url) {window.alert(res.url);}}}});let style = window.document.createElement('style');style.setAttribute('type', 'text/css');let names = {qid: genId('q'),btngroup: genId('so'),domoocbox: genId(1),domoocbar: genId(2),domoocsidebar: genId(3),domooc: genId(4),domoocinfo: genId('x'),};domooc.names = names;style.innerHTML = `#${names.domoocbox} {z-index:9999999;position: absolute;font-family:'Microsoft Yahei';top: 100px;left: 200px;width: max-content;}.${names.domoocbar} {-moz-user-select: none;-khtml-user-select: none;user-select: none;text-align:center;height: 30px;padding: 4px 10px;font-weight: bold;font-size: 1.25em;line-height: 30px;color: black;background-color: rgba(200,200,200,0.8);cursor: move;}.${names.domoocsidebar} {padding:10px ;background-color: rgba(248,248,248,0.8);height: max-content;}.${names.domooc}{font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;}.${names.domooc} form{margin-top: 5px;font-weight:500;}.${names.domooc} .button {background-color: #4CAF50; /* Green */border: none;color: white;padding: 3px 8px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;border-radius: 4px;}.${names.domooc} .button.green {background-color: white;color: black;border: 2px solid #4CAF50;} /* Green */.${names.domooc} .button.blue {background-color: white;color: black;border: 2px solid #008CBA;} /* Blue */.${names.domooc} .button.red {background-color: white;color: black;border: 2px solid #f44336;} /* Red */.${names.domooc} .button.gray {background-color: white;color: black;border: 2px solid #e7e7e7;} /* Gray */.${names.domooc} .button.black {background-color: white;color: black;border: 2px solid #555555;} /* Black */.${names.domooc} .size1 {font-size: 10px;}.${names.domooc} .size2 {font-size: 12px;}.${names.domooc} .size3 {font-size: 16px;}.${names.domooc} .size4 {font-size: 20px;}.${names.domooc} .size5 {font-size: 24px;}.${names.domooc} .button {-webkit-transition-duration: 0.4s; /* Safari */transition-duration: 0.4s;}.${names.domooc} .button.green:hover {background-color: #4CAF50;color: white;}.${names.domooc} .button.blue:hover {background-color: #008CBA;color: white;}.${names.domooc} .button.red:hover {color: white;background-color: #f44336;}.${names.domooc} .button.grey:hover {background-color: #e7e7e7;color: black;}.${names.domooc} .button.black:hover {background-color: #555555;color: white;}.${names.domooc} .${names.btngroup}{float:none !important;margin-bottom:1em;}.${names.domooc} .${names.btngroup} .button{margin-left: -2px;}.${names.domooc} .${names.btngroup}>.button:nth-of-type(1) {margin-left: 0px;}.${names.domooc} input{padding: 1px 4px;border: solid 0.5px #9a9898;}
`;$(() => {window.document.body.append(style);if (document.querySelector(`#${names.domoocbox}`)) {return;}let utils = domooc.utils;utils.processReturnResult = function(res) {if (res.qqgroup) {qqgroup = res.qqgroup;view.addInfo(dstrings.qqgroup + qqgroup);}if (res.message) {view.addInfo(res.message);}if (res.button) {viewbuttons.push(res.button);view.refreshBtnList();}if (res.msgobj) {view.showServerMsg(res.msgobj);}if (res.user) {domooc.userinfo = res.user;let leftcredits = res.user.credits - res.user.usedcredits;if (res.user.cdkey) {if (!GM_getValue('cdkey') || GM_getValue('cdkey') === "undefined") {GM_setValue('cdkey', res.user.cdkey.pattern);}leftcredits = res.user.cdkey.credits - res.user.cdkey.usedcredits;view.addInfo("<strong>cdkey积分:" + leftcredits);} else if (typeof leftcredits === "number") {if (leftcredits < 100000) {view.addInfo("<strong>账号积分:" + leftcredits);}}}}window[handledomoocRPC] = (batchId, status, obj) => {if (obj && obj.mocTermDto && obj.mocTermDto.exams && obj.mocTermDto.exams.length) {let exams = obj.mocTermDto.exams;for (let i = 0; i < exams.length; i++) {window.setTimeout(() => {if (exams[i].objectTestId) {if (utils.shouldUpload(exams[i].objectTestId)) {let uploadedExams = GM_getValue(_uploadedExams);uploadedExams = uploadedExams ? uploadedExams : [];if (uploadedExams.indexOf(exams[i].objectTestId) < 0) {tnames[exams[i].objectTestId] = exams[i].name;domooc.utils.getExamInfo(exams[i].objectTestId);}}}}, i * 1000 * 5);}domooc.console.log('first stage finised');} else if (obj && obj.targetAnswerform && obj.targetAnswerform.aid) {window.setTimeout(() => {domooc.utils.getQuizPaper(obj.tid, obj.targetAnswerform.aid);}, 2000);domooc.console.log('second stage finised');} else {if (obj && obj.objectiveQList && obj.objectiveQList.length) {obj.isExam = true;obj.tname = tnames[obj.tid];domooc.analysisAnswer(obj);}domooc.console.log(obj);}};utils.shouldUpload = (id) => {let shouldUpload = true;if (domooc.quizbank instanceof Array) {domooc.quizbank.forEach(quiz => {if (quiz.id === id && !quiz.get) {shouldUpload = false;}});}return shouldUpload;}utils.getLastLearnedMocTermDto = function(coursedto) {if (!coursedto) {coursedto = window.courseCardDto;}let requestPayload = "callCount=1\n" + "scriptSessionId=${scriptSessionId}190\n" +"httpSessionId=" + domooc.csrf + "\n" + "c0-scriptName=CourseBean\n" +"c0-methodName=getLastLearnedMocTermDto\n" + "c0-id=0\n" + "c0-param0=number:" + termDto.id + "\n" +"batchId=" + this.getBatchID();let res = null;$.ajax({url: domooc.url.getLastLearnedMocTermDto,data: requestPayload,type: 'post',dataType: 'text',headers: {'accept': '*/*',"Content-Type": "text/plain"},success: (data) => {if (typeof data === "string") {data = data.replace(/dwr\.engine\._[\w]+\(/, handledomoocRPC + '(');window.eval(data);}}});return res;};utils.getExamInfo = async function(objectTestId, aid) {let requestPayload = `callCount=1\nscriptSessionId=\${scriptSessionId}190\nhttpSessionId=${domooc.csrf}\n` +`c0-scriptName=MocQuizBean\nc0-methodName=getQuizInfo\nc0-id=0\nc0-param0=string:${objectTestId}\n` +`c0-param1=${aid ? ("string:" + aid) : "null:null"}\nc0-param2=boolean:false\nbatchId=${this.getBatchID()}`;$.ajax({url: domooc.url.getQuizInfo,data: requestPayload,type: 'post',dataType: 'text',headers: {'accept': '*/*',"Content-Type": "text/plain"},success: (data) => {if (typeof data === "string") {data = data.replace(/dwr\.engine\._[\w]+\(/, handledomoocRPC + '(');window.eval(data);}}});};utils.getQuizPaper = async function(quizid, aid) {if (aid === undefined) {aid = 0;}let requestPayload = "callCount=1\n" +"scriptSessionId=${scriptSessionId}190\n" +"httpSessionId=" + domooc.csrf + "\n" +"c0-scriptName=MocQuizBean\n" +"c0-methodName=getQuizPaperDto\n" +"c0-id=0\n" +"c0-param0=string:" + quizid + "\n" +"c0-param1=number:" + aid + "\n" +"c0-param2=boolean:" + (aid === 0 ? "false" : "true") + "\n" +"batchId=" + this.getBatchID();$.ajax({url: domooc.url.getQuizPaper,data: requestPayload,type: 'post',dataType: 'text',headers: {'accept': '*/*',"Content-Type": "text/plain"},success: (data) => {if (typeof data === "string") {data = data.replace(/dwr\.engine\._[\w]+\(/, handledomoocRPC + '(');window.eval(data);}}});};utils.remove = function(arr, val) {var index = arr.indexOf(val);while (index > -1) {arr.splice(index, 1);index = arr.indexOf(val);}return arr;};utils.unique = function(arr, compareFn) {arr.sort(compareFn);var re = [arr[0]];for (var i = 1; i < arr.length; i++) {if (compareFn(arr[i], re[re.length - 1]) !== 0) {re.push(arr[i]);}}return domooc.utils.remove(re, undefined);};function initParams() {domooc.quizs = null;domooc.exceptionflag = false;domooc.quizpaper = {};domooc.qb = {};domooc.quiztests = [];domooc.termid = 0;domooc.courseid = 0;domooc.answerAll = false;domooc.getAnswerflag = false;}domooc.getAnswerquizs = [];let getAnswerByIdflag = false;domooc.getAnswerById = function(ele, quiz, idx) {domooc.console.log({getAnswerByIdflag,ele,quiz,idx,ids: domooc.getAnswerquizs})if (getAnswerByIdflag || domooc.getAnswerquizs.indexOf(quiz.id) > -1) {return;}let getanswerFail = () => {getAnswerByIdflag = false;domooc.utils.remove(domooc.getAnswerquizs, quiz.id);view.addInfo("获取答案失败!");}let data = getInitialData();data.quiz = {id: quiz.id,type: quiz.type,title: quiz.title.domoocformat(1),formated: true};if (quiz.type == 1 || quiz.type == 2 || quiz.type == 4) {data.quiz.optIds = quiz.optionDtos.map(x => { return x.id });data.quiz.optContent = quiz.optionDtos.map(x => { return x.content.domoocformat(1) });}if (domooc.quizpaper && domooc.quizpaper.tid) {data.tid = domooc.quizpaper.tid;}getAnswerByIdflag = true;GM_xmlhttpRequest({method: 'POST',url: domooc.url.getAnswerById,data: JSON.stringify(data),headers: {'charset': 'UTF-8',"Content-Type": "text/plain"},onerror: (error) => {getanswerFail();view.addInfo("网络或服务器错误");},ontimeout: (error) => {getanswerFail();view.addInfo("网络超时");},onload: response => {domooc.getAnswerquizs[idx] = quiz.id;getAnswerByIdflag = false;let res = JSON.parse(response.responseText);domooc.utils.processReturnResult(res);if (response.status == 200) {let displaymsg = res.success ? domooc.utils.answer2str(res.answer.answer) : ('此题无答案!');$(ele).parent().append(displaymsg);$(ele).remove();} else {getanswerFail();view.addInfo(res.detail);window.console.error({err: response});}}});}function userMessage(msg) {if (!msg) {return;}view.addInfo("正在留言...");let data = getInitialData();data.message = msg;GM_xmlhttpRequest({method: 'POST',url: domooc.url.userMessage,data: JSON.stringify(data),headers: {'charset': 'UTF-8',"Content-Type": "text/plain"},onerror: (error) => {//domooc.console.log({ onerror: error });view.addInfo("留言失败!", "网络或服务器错误");},ontimeout: (error) => {//domooc.console.log({ ontimeout: error });view.addInfo("留言失败!", "网络超时");},onload: response => {if (response.status == 200) {let res = JSON.parse(response.responseText);domooc.console.log(res);if (res.error) {view.addInfo("留言失败!", res.detail);} else {view.addInfo("留言成功!");}} else {domooc.getAnswerflag = false;view.addInfo("留言失败!");domooc.console.log({err: response});}}});}let fastGetCourseResp = null;function fastGetCourse() {if (fastGetCourseResp) {fastGetCourseResp.showMsg();return;}if (domooc.notsupport) {let msg = "当前课程暂不支持获取答案,建议和同学合作" +"<br>您可以利用自动上传功能获取题库,在没有题库的情况下先随便做一遍,脚本将自动上传正确答案到服务器,反复几次获取完测验的答案后即可实现100%准确率" +"<br>比如有的测验只有10道题,但是它的题库有20道,这样你第一次获取了10道题,但是还有10道题是没有答案的,所以多叫几个同学,每个人答一次,就能把完全取得这20题的答案" +"<br>对于考试,您可以先用小号随便做,提交之后刷新并在测验页面等待几十秒,脚本将自动上传考试答案,即使还未公布成绩";view.showServerMsg(msg);return;}view.addInfo("正在加入刷题队列...");let data = getInitialData();GM_xmlhttpRequest({method: 'POST',url: domooc.url.fastGetCourse,data: JSON.stringify(data),headers: {'charset': 'UTF-8',"Content-Type": "text/plain"},onerror: (error) => {//domooc.console.log({ onerror: error });view.addInfo("<error>加入刷题队列失败", "网络或服务器错误");},ontimeout: (error) => {//domooc.console.log({ ontimeout: error });view.addInfo("<error>加入刷题队列失败", "网络超时");},onload: response => {let res = JSON.parse(response.responseText);if (response.status == 200) {domooc.console.log(res);if (res.error) {view.addInfo("<error>加入刷题队列失败", res.detail);} else {fastGetCourseResp = res;view.addInfo("加入刷题队列成功");let currentTime = new Date().getTime();fastGetCourseResp.showMsg = function() {let remain = this.time - ((new Date().getTime() - currentTime) / 1000 | 0);let msg = "";if (remain > 0) {msg = `您请求的课程排在队列第${this.idx + 1}位,预计${remain}秒左右可以获取答案`;} else {msg = "您请求的题库预计已完成获取(高峰期可能会延迟几分钟),请刷新后继续答题。";}msg = msg + "<br><br>注意:编程题、没有在作业与测验列表里的测验暂时无答案,请勿滥用此功能";view.showServerMsg(msg);}fastGetCourseResp.showMsg();domooc.fastcoursehandler = window.setInterval(() => {courseCheck();if ((new Date().getTime() - currentTime) < -1000 * 30) {window.clearInterval(domooc.fastcoursehandler);}}, 15 * 1000);}} else {domooc.getAnswerflag = false;view.addInfo("<error>加入刷题队列失败", res.detail);domooc.console.log({err: response});}}});}domooc.answerClassTest = function(paper) {let quizs = paper.objectiveQList;let answers = [];if (domooc.quizbank instanceof Array) {let ids = domooc.quizbank.map(x => x.id);if (ids.indexOf(paper.tid) < 0) {let data = getInitialData();data.quizpaper = paper;data.type = "classtest";GM_xmlhttpRequest({method: 'POST',url: domooc.url.upsertQuizpaper,data: JSON.stringify(data),headers: {'charset': 'UTF-8',"Content-Type": "text/plain"}});}}quizs.forEach((ele, idx) => {let obj = {id: ele.id,type: ele.type,answer: []};if ([1, 2, 4].indexOf(ele.type) > -1) {ele.optionDtos.forEach((ele2, idx2) => {if (ele2.answer) {obj.answer.push({idx: idx2,content: ele2.content.domoocformat(1)});}});} else {let correct = ele.stdAnswer.split(domooc.FILL_BLANK_SPLITCHAR);correctOpt = null;let len = correct.length;for (let i = 0; i < len; i++) {let ele2 = correct[i];if (ele2.indexOf(' ') === -1) {correctOpt = ele2;break;}}correctOpt = correctOpt ? correctOpt : correct[len - 1];obj.answer = correctOpt;}answers.push(obj);});answerAll(answers, true);}let refreshRepeat = () => {if (domooc[learnCourse]) {domooc[learnCourse].repeat = domooc[learnCourse].maxRepeat;}}let answerAction = {click: function(input, correct) {refreshRepeat();if (usersetting.autoanswer) {input.click();// input.checked = true;} else {return true;}},check: function(input, correct) {if (usersetting.autoanswer) {refreshRepeat();if (($(input).is(':checked') && !correct) || (!$(input).is(':checked') && correct)) {input.click();// input.checked = !input.checked;}} else {return true;}},blank: function(label, textarea, answer) {let answerflag = false;refreshRepeat();if (usersetting.autoanswer) {label.click();textarea.click();textarea.focus();if (answer && (typeof answer === "string")) {utils.setBlankValue(textarea, answer);answerflag = true;}} else {return true;}return answerflag;}};function getAnswerByElement(ele, answers) {let p = ele.querySelector('p#' + domooc.getanswerbyidstr);if (!p || !p.dataset[names.qid]) {view.addInfo("<strong>一键答题失败!");throw Error("p.dataset.id is undefined!");} else {p.innerHTML = answers[p.dataset[names.qid]] && answers[p.dataset[names.qid]].answer ? domooc.utils.answer2str(answers[p.dataset[names.qid]].answer) : p.innerHTML;return answers[p.dataset[names.qid]];}}function answerAll(quizanswers, isclasstest) {domooc.console.log({answerAll: quizanswers})try {let answers = quizanswers.reduce((prev, cur) => {prev[cur.id] = cur;return prev;}, {});domooc.noAnswer = false;let cnt = 0;let length = $('div.m-data-lists.f-cb.f-pr.j-data-list').children().length;let noAnswerIdx = [];let timeouts = 0;let checkTimeouts = () => {timeouts--;if (timeouts <= 0) {if (domooc.noAnswer) {view.showServerMsg(`第${noAnswerIdx.join(', ')}题无答案!`);}domooc.answerAll = true;}}if (document.location.href.indexOf('hw') > -1) {$("div.j-homework-paper  div.j-title.f-cb.title.questionDes > div.qaDescription.f-fl.f-cb div.f-richEditorText.j-richTxt.f-fl").each((idx, ele) => {cnt++;let answer = getAnswerByElement(ele, answers);});} else {$('div.m-data-lists.f-cb.f-pr.j-data-list').children().each((idx, ele) => {cnt++;let answer = getAnswerByElement(ele, answers);let currentcnt = cnt;timeouts++;window.setTimeout(() => {if (answer) {let answerflag = false;if ([1, 2, 4].indexOf(answer.type) > -1) {answer.answer = answer.answer.map(x => x.idx);let checkcnt = 0;$(ele).find('input').each((idx2, input) => {let tempfunc = answer.type === 2 ? answerAction.check : answerAction.click;if (answer.answer.indexOf(idx2) > -1) {answerflag = true;timeouts++;window.setTimeout(() => {tempfunc(input, true);checkTimeouts();}, checkcnt * (usersetting.timeout - 1000) / 4);}checkcnt++;});} else if (answer.type === 3) {let textarea = $(ele).find("textarea.j-textarea.inputtxt")[0];let label = $(ele).find("label.j-hint")[0];if (answerAction.blank(label, textarea, answer.answer)) {answerflag = true;}}if (!answerflag) {domooc.noAnswer = true;noAnswerIdx.push(currentcnt);$(ele).css("background-color", "rgb(254, 255, 209)");}checkTimeouts();}}, ((usersetting.timeout < 1000 ? 1000 : usersetting.timeout) * cnt + Math.random() * usersetting.timeout * 0.25));});}view.addInfo(dstrings.answerallsuccess);if (qqgroup) {view.addInfo(dstrings.qqgroup + qqgroup);}} catch (error) {view.addInfo(dstrings.answerallfail);if (qqgroup) {view.addInfo(dstrings.qqgroup + qqgroup);}window.console.error(error);}}let upsertQuizpaperflag = false;domooc.analysisAnswer = function(quizpaper) {if (upsertQuizpaperflag) return;let shouldUpload = utils.shouldUpload(quizpaper.tid);if (quizpaper.isExam) {shouldUpload = true;}let answers = quizpaper.answers;let qlist = quizpaper.objectiveQList;let answs = {};let allright = true;if (!(answers instanceof Array)) {allright = false} else if (answers.length < qlist.length) {allright = false} else {answers.forEach(ele => {if ([1, 2, 4].indexOf(ele.type) > -1) {answs[ele.qid] = {optIds: (ele.optIds instanceof Array) ? ele.optIds : []}} else {answs[ele.qid] = {content: ele.content.content}}});qlist.forEach((ele) => {if ([1, 2, 4].indexOf(ele.type) > -1) {ele.optionDtos.forEach(opt => {if ((opt.answer && answs[ele.id].optIds.indexOf(opt.id) < 0) || (!opt.answer && answs[ele.id].optIds.indexOf(opt.id) > -1)) {allright = false;}});} else {if (ele.stdAnswer.split(domooc.FILL_BLANK_SPLITCHAR).indexOf(answs[ele.id] ? answs[ele.id].content : "") < 0) {allright = false;}}});}if (!allright || domooc.noAnswer || shouldUpload) {let data = getInitialData();data.quizpaper = quizpaper;data.type = "quizbank";if (quizpaper.isExam) {data.type = "exam";}domooc.console.log({ getAnswer: data });if (!shouldUpload) {view.addInfo("检测到题库错误,正在上传...");}upsertQuizpaperflag = true;GM_xmlhttpRequest({method: 'POST',url: domooc.url.upsertQuizpaper,data: JSON.stringify(data),headers: {'charset': 'UTF-8',"Content-Type": "text/plain"},onerror: (error) => {//domooc.console.log({ onerror: error });upsertQuizpaperflag = false;if (!shouldUpload) {view.addInfo("结果分析失败!", "如答案有错请加交流群");}},ontimeout: (error) => {//domooc.console.log({ ontimeout: error });upsertQuizpaperflag = false;if (!shouldUpload) {view.addInfo("结果分析失败!", "如答案有错请加交流群");}},onload: response => {if (response.status == 200) {upsertQuizpaperflag = false;let res = JSON.parse(response.responseText);domooc.utils.processReturnResult(res);// view.addInfo("答案上传成功!");// if (res.newCnt) {// view.addInfo(`本次上传:${res.newCnt} 累计上传:${res.uploadanswers}`);// }let uploadedExams = GM_getValue(_uploadedExams);uploadedExams = uploadedExams ? uploadedExams : [];uploadedExams.push(quizpaper.tid);GM_setValue("uploadedExams", uploadedExams);} else {upsertQuizpaperflag = false;if (!shouldUpload) {view.addInfo("结果分析失败!", "如答案有错请加交流群");}domooc.console.log({err: response});}}});upsertQuizpaperflag = true;}domooc.console.log({analysisAnswer: quizpaper})}domooc.getAnswer = function(quizpaper) {if (domooc.getAnswerflag) {return;}quizpaper = quizpaper ? quizpaper : domooc.quizpaper;if (!quizpaper) {domooc[_view].addInfo("<error>获取答案失败!")}let data = getInitialData();if (data.courseid && data.termid) {data.testid = quizpaper.tid;data.quizs = [];quizpaper.objectiveQList.forEach(t => {if (domooc.getAnswerquizs.indexOf(t.id) === -1) {let obj = { id: t.id, type: t.type, title: t.title.domoocformat(1), formated: true };if (t.type == 1 || t.type == 2 || t.type == 4) {obj.optIds = t.optionDtos.map(x => { return x.id });obj.optContent = t.optionDtos.map(x => { return x.content.domoocformat(1) });}data.quizs.push(obj);}});quizpaper.subjectiveQList.forEach(t => {if (domooc.getAnswerquizs.indexOf(t.id) === -1) {let obj = { id: t.id, type: t.type, title: t.title.domoocformat(1) };data.quizs.push(obj);}});domooc.getAnswerflag = true;domooc.console.log({ getAnswer: data })GM_xmlhttpRequest({method: 'POST',url: domooc.url.getanswer,data: JSON.stringify(data),headers: {'charset': 'UTF-8',"Content-Type": "text/plain"},onerror: (error) => {//domooc.console.log({ onerror: error });domooc.getAnswerflag = false;view.addInfo("获取答案失败!", "网络或服务器错误");},ontimeout: (error) => {//domooc.console.log({ ontimeout: error });domooc.getAnswerflag = false;view.addInfo("获取答案失败!", "网络超时");},onload: response => {let res = JSON.parse(response.responseText);domooc.utils.processReturnResult(res);if (response.status == 200) {domooc.console.log(res);if (res.message) {view.addInfo(res.message);}if (res.button) {view.buttons.push(res.button);view.refreshBtnList();}view.showServerMsg(res.msgobj);domooc.quizanswers = res.quizanswers;if (domooc.quizanswers && domooc.quizanswers.length) {view.addInfo(dstrings.answeringall);answerAll(res.quizanswers);} else {view.addInfo("测验答案不存在");}domooc.getAnswerflag = false;} else {domooc.getAnswerflag = false;view.addInfo("获取答案失败!", res.detail);domooc.console.log({err: response});}}});} else {domooc.getAnswerflag = false;view.addInfo("获取答案失败!", "请返回上一页重新进入");}}function getInitialData() {return {user: {id: window.webUser.id,email: window.webUser.email ? window.webUser.email : "无",nickName: window.webUser.nickName,loginId: window.webUser.loginId,personalUrlSuffix: window.webUser.personalUrlSuffix,loginId: window.webUser.loginId},version: version,termDto: window.termDto,courseDto: window.courseDto,courseCardDto: window.courseCardDto,termid: window.termDto.id,href: domooc.href,courseid: window.courseCardDto.id,cdkey: (GM_getValue('cdkey') && GM_getValue('cdkey') !== "undefined") ? GM_getValue('cdkey') : undefined}}let courseCheckflag = false;function courseCheck() {if (courseCheckflag) {return;}let data = getInitialData();if (data.courseid && data.termid) {courseCheckflag = true;domooc.console.log({courseCheck: data})GM_xmlhttpRequest({method: 'POST',url: domooc.url.check,data: JSON.stringify(data),headers: {'charset': 'UTF-8',"Content-Type": "text/plain"},onerror: () => {courseCheckflag = false;view.addInfo("<error>获取题库失败!");},ontimeout: () => {courseCheckflag = false;view.addInfo("<error>获取题库失败!", "网络超时");},onload: response => {let res = JSON.parse(response.responseText);domooc.notsupport = res.notsupport;domooc.utils.getLastLearnedMocTermDto();domooc.utils.processReturnResult(res);if (response.status == 200) {try {if (!res.error && res.updatedAt) {view.addInfo(dstrings.qbupdate + new Date(res.updatedAt).toLocaleString());domooc.quizbank = res.quizbank;view.showQuizbank(res.quizbank);} else {view.addInfo("<error>获取题库失败!", res.detail);throw Error()}} catch (error) {view.addInfo("<error>获取题库失败!", res.detail);}domooc.console.log(res);} else {view.addInfo("<error>获取题库失败!", res.detail);domooc.console.log({err: response});}}});} else {courseCheckflag = false;view.addInfo("<error>不能获取termId!", null);}}domooc.coursecheck = courseCheck;let intHandler = window.setInterval(() => {let href = document.location.href;if ((href.indexOf('testlist') + href.indexOf('examlist') + href.indexOf('content') + href.indexOf('quizscore') + href.indexOf('quiz') + href.indexOf('hw') > -6) && window.courseCardDto) {domooc.loaded = true;loadxcComfirm($, window, domooc);window.clearInterval(intHandler);initParams();window.setTimeout(() => { view.init(); }, 3000);domooc.edu = window.edu;try {domooc.FILL_BLANK_SPLITCHAR = domooc.edu.u.CONST.FILL_BLANK_SPLITCHAR;} catch (error) {domooc.console.error(error);} finally {domooc.FILL_BLANK_SPLITCHAR = domooc.FILL_BLANK_SPLITCHAR ? domooc.FILL_BLANK_SPLITCHAR : "##%_YZPRLFH_%##";}let handler1 = window.setInterval(() => {let video = document.querySelector("video");if (video && (typeof video.onpause !== "function")) {video.onpause = () => {if ($('div.j-insetCt')[0]) {$('div.j-insetCt').parent().remove();video.play();}}}}, 1000);let href = document.location.href;domooc.href = href;if (usersetting.cdkey) {GM_setValue('cdkey', usersetting.cdkey);}let lastUser = GM_getValue('lastUserInfo');if (!lastUser) {lastUser = getInitialData().user;GM_setValue('lastUserInfo', getInitialData().user);}if (lastUser.id !== getInitialData().user.id) {GM_setValue('lastUserInfo', getInitialData().user);view.showServerMsg({title: "MOOC账号更换通知",message: "积分与cdkey绑定,更换账号后可继续使用上一个cdkey的积分<br>如需切换、清空cdkey,请点击右侧设置cdkey按钮<br>切换之前请记得备份当前cdkey,否则无法找回"});}let updatemsg = GM_getValue('updatemsg');if (!updatemsg || parseInt(updatemsg) < 180) {view.showVersion();GM_setValue('updatemsg', version);}courseCheck();}}, 500);let view = {config: {tabon: 'u-curtab',},infoqueue: {arr: [],idx: 0,length: 8,put: function(msg) {this.arr[this.idx % this.length] = msg;this.idx = (this.idx + 1) % this.length;},get: function(num) {return this.arr[(this.idx + num) % this.length];}},dragBox: function(drag, wrap) {let that = this;var initX,initY,dragable = false,wrapLeft = $(wrap).offset().left;wrapTop = $(wrap).offset().top;drag.addEventListener('dblclick', function(e) {if (this.innerText === dstrings.dbcfold) {this.innerText = dstrings.dbcunfold;$("div." + names.domoocsidebar).hide();} else {this.innerText = dstrings.dbcfold;$("div." + names.domoocsidebar).show();}domooc.console.log(this);}, false);drag.addEventListener("mousedown", function(e) {dragable = true;initX = e.clientX;initY = e.clientY;wrapLeft = $(wrap).offset().left;wrapTop = $(wrap).offset().top;}, false);document.addEventListener("mousemove", function(e) {if (dragable === true) {var nowX = e.clientX,nowY = e.clientY,disX = nowX - initX,disY = nowY - initY;// console.log({//     nowX, nowY, initX, initY// });$(wrap).offset({ left: wrapLeft + disX, top: wrapTop + disY });}});drag.addEventListener("mouseup", function(e) {dragable = false;wrapLeft = $(wrap).offset().left;wrapTop = $(wrap).offset().top;that.top = wrapTop - $(window).scrollTop();that.left = wrapLeft;GM_setValue('domoocbox', {top: that.top,left: that.left});}, false);},buttons: [{text: dstrings.startlearncourse,onclick: function() {if (!domooc.learnCourse.started) {if (domooc.learnCourse.getCurrentPageType()) {domooc.learnCourse.start();view.addInfo("不要最小化当前窗口", "也不要切换出当前页面", "否则你的观看时长不会被记录!");view.showServerMsg("不要最小化当前窗口,也不要切换出当前页面,否则你的观看时长不会被记录!<br>你可以多开浏览器以并行刷课。" +"<br>刷课件的时候不会自动翻页,请耐心等待,刷完之后会自动跳转到下一个内容。" +"<br>如果刷课过程中遇到各种莫名其妙的问题,请更换为360极速浏览器。");$(this).children().text(dstrings.stoplearncourse);} else {window.alert("请先点开一个课件!");}} else {domooc.learnCourse.terminate();$(this).children().text(dstrings.startlearncourse);}}}, {text: dstrings.answerall,onclick: function() {domooc.getAnswer();}}, {text: dstrings.noans,onclick: fastGetCourse}, {text: dstrings.more,onclick: function() {let _usersetting = GM_getValue('usersetting');if (_usersetting === undefined || _usersetting === "undefined") {_usersetting = usersetting;}let container = $(`<div class="${names.domooc}"></div>`);let group1 = $(`<div class="${names.btngroup}"></div>`);group1.append(`<p class="size3">更多功能</p>`);names.version = genId('v');names.userinfo = genId('ui');names.usermsg = genId('um');group1.append(`<button id="${names.version}" class="${names.domooc} button green">版本信息</button>`);group1.append(`<button id="${names.userinfo}" class="${names.domooc} button green">用户信息</button>`);group1.append(`<button id="${names.usermsg}" class="${names.domooc} button green">向我留言</button>`);group1.append(`<button class="${names.domooc} button green" onclick="window.open('https://blog.csdn.net/qq_39635693/article/details/105492911','_blank')">使用说明</button>`);group1.append(`<button class="${names.domooc} button green" onclick="window.open('https://greasyfork.org/zh-CN/scripts/399230','_blank')">greasyfork更新</button>`);group1.append(`<button class="${names.domooc} button green" title="从domooc服务器复制粘贴最新脚本" onclick="window.open('https://lolzyx.xyz/static/tampermonkey/domooc.js','_blank')">复制粘贴更新</button>`);container.append(group1);let group2 = $(`<div class="${names.btngroup}"></div>`);let currentcdkey = getInitialData().cdkey;let tempdonateurl = domooc.donateurl;if (currentcdkey && currentcdkey !== "undefined") {tempdonateurl = domooc.donateurl + "&cdkey=" + currentcdkey;}names.cdkeyinfo = genId('ci');group2.append(`<p class="size3">CDKEY相关(确定后需刷新才能生效)</p>`);group2.append(`<button class="${names.domooc} button green" onclick="window.open('${domooc.retrievecdkeyurl}','_blank')">找回cdkey</button>`);group2.append(`<button onclick="window.open('${tempdonateurl}','_blank')" class="${names.domooc} button green">获取积分</button>`);group2.append(`<button id="${names.cdkeyinfo}" class="${names.domooc} button green">积分使用记录</button>`);let form2 = $(`<form class="size3" name="cdkey"></form>`);form2.append(`<span style="font-weight:700;color:#2aa126;">设置cdkey:</span><input type="text" name="cdkey" placeholder="${currentcdkey ? "点击确定清空当前cdkey,清空前请先备份" : '请输入要使用的cdkey'}" value="${currentcdkey ? currentcdkey : ''}" size="66"/><br>`);if (currentcdkey) {form2.append(`如需清空,将上面cdkey全部删除后确定即可`);};group2.append(form2);container.append(group2);let group3 = $(`<div class="${names.btngroup}"></div>`);group3.append(`<p class="size3">挂机刷课设置(确定后需刷新才能生效)</p>`);let form3 = $(`<form class="size3" name="learnsetting"></form>`);form3.append(`<input type="checkbox" name="video" value="video" ${_usersetting.learnCourse.video ? 'checked' : ''} />刷视频 `);form3.append(`<input type="checkbox" name="doc" value="doc" ${_usersetting.learnCourse.doc ? 'checked' : ''}/>刷文档 `);form3.append(`<input type="checkbox" name="test" value="test" ${_usersetting.learnCourse.test ? 'checked' : ''}/>刷随堂测验<br>`);form3.append(`<input type="checkbox" name="discuss" value="discuss" ${_usersetting.learnCourse.discuss ? 'checked' : ''}/>刷讨论(将自动从当前页面选一条最长的评论复制粘贴,如果当前讨论还没有人发表评论则跳过)<br>`);form3.append(`视频倍速(最高16倍,设置为0表示用默认速度):<input type="number" name="playrate" size="6" value="${_usersetting.learnCourse.playrate}"/><br>`);group3.append(form3);container.append(group3);let group4 = $(`<div class="${names.btngroup}"></div>`);group4.append(`<p class="size3">答题设置(确定后需刷新才能生效)</p>`);let form4 = $(`<form class="size3" name="answersetting"></form>`);form4.append(`<input type="checkbox" name="autogetanswer" value="autogetanswer" ${_usersetting.autogetanswer ? 'checked' : ''}/>自动获取答案(每次测验自动获取答案,并扣除相应积分,刷新将导致重复扣除积分)<br>`);form4.append(`<input type="checkbox" name="autoanswer" value="autoanswer" ${_usersetting.autoanswer ? 'checked' : ''}/>自动填写答案(不支持"单个题目查看答案"自动填写)<br>`);form4.append(`<input type="checkbox" name="showanswerbtn" value="showanswerbtn" ${_usersetting.showanswerbtn ? 'checked' : ''}/>显示查看答案按钮(关闭后不会显示每道题的答案,此项对主观题无效)<br>`);form4.append(`答题延时(每两道题之间的时间间隔,至少为${mintimeout/1000}秒):<input type="number" name="timeout" size="6" value="${_usersetting.timeout / 1000}"/><br>`);group4.append(form4);container.append(group4);domooc.wxc.xcConfirm(container, "custom", option = {title: dstrings.more,btn: parseInt("0011", 2),onOk: () => {form2.find('input').each((idx, ele) => {if (ele.name === "cdkey" && typeof ele.value === "string") {function checkCdkey(v) {try {if (currentcdkey === v) {return;}if (!v) {if (!currentcdkey || currentcdkey === "undefined") {return;}let txt = `<span style='color:#16a951;font-size:bold;'>当前cdkey为:${currentcdkey},清空后不可恢复!</span>`let option = {title: "确认清除当前cdkey?",btn: parseInt("0011", 2),onOk: function() {view.showServerMsg("cdkey已清空!<br>如果cdkey内还有积分,建议将cdkey保存到QQ收藏<br>" + currentcdkey);GM_setValue('lastcdkey', currentcdkey);GM_setValue("cdkey", undefined);}}domooc.wxc.xcConfirm(txt, "custom", option);} else {let cdkey = /^[\w\d]{64,64}$/g.exec(v.replace(/[\s]+?/g, ''));if (!cdkey) {throw Error("cdkey format wrong!");} else {GM_setValue('lastcdkey', currentcdkey + '');GM_setValue('cdkey', cdkey[0]);let msg = "设置cdkey成功!刷新后生效。<br><br>当前cdkey:<br>" + cdkey[0];if (currentcdkey) {msg += "<br><br>" + "上一个cdkey为:<br>" + currentcdkey + "<br><strong style='color:red'>建议您保存上一个cdkey</strong>"}view.showServerMsg(msg);}}} catch (e) {console.error(e);view.showServerMsg("请输入有效的cdkey<br>如果您确定cdkey无问题,请更换其他浏览器后再试<br>更换之前记得保存好您的cdkey");}}checkCdkey(ele.value);}});form3.find('input').each((idx, ele) => {_usersetting.learnCourse[ele.name] = ele.type === "number" ? parseFloat(ele.value) : ele.checked;});form4.find('input').each((idx, ele) => {_usersetting[ele.name] = ele.type === "number" ? parseFloat(ele.value) * 1000 : ele.checked;});if (_usersetting.learnCourse.playrate < 0 || _usersetting.learnCourse.playrate > 16) {window.alert('播放倍速范围应该在0-16!');return false;} else if (_usersetting.timeout < mintimeout / 1000) {window.alert(`答题延时应大于${ mintimeout / 1000}!`);return false;} else if (!_usersetting.autoanswer && !_usersetting.showanswerbtn) {window.alert('"自动填写答案"与"显示查看答案按钮"不能同时关闭!\n否则无法正常使用!');return false;} else {domooc.console.log(_usersetting);GM_setValue("usersetting", _usersetting);usersetting = _usersetting;}}});$("#" + names.version).click(() => {view.showVersion();});let showinfo = function() {var txt = "上传给服务器的信息:";let user = getInitialData().user;for (let key in user) {txt = txt + "<br>" + key + ":" + user[key]}let localcdkey = GM_getValue('cdkey');if (localcdkey && localcdkey !== "undefined") {txt = txt + "<br><br>" + `<span style='color:#16a951;font-size:bold;'>保存在本地的cdkey(更换账号后将使用此cdkey):${localcdkey}</span>`}if (domooc.userinfo) {let txt2 = "mooc账号积分使用情况(若存在cdkey则优先使用cdkey积分):";txt2 = txt2 + "<br>" + "总积分:" + ":" + domooc.userinfo.credits;txt2 = txt2 + "<br>" + "已使用:" + ":" + domooc.userinfo.usedcredits;// if (domooc.userinfo.cdkeys instanceof Array) {//     domooc.userinfo.cdkeys.forEach((key, idx) => {//         txt2 = txt2 + "<br>" + "cdkey" + idx + ":" + key;//     })// }if (domooc.userinfo.cdkey) {let cdkey = domooc.userinfo.cdkey;txt2 = txt2 + "<br><br>" + "cdkey积分使用情况:";txt2 = txt2 + "<br>" + "<span style='color:#16a951;font-size:bold;'>cdkey(请妥善保存,勿泄露给他人)" + ":" + cdkey.pattern + "</span>";txt2 = txt2 + "<br>" + "总积分" + ":" + cdkey.credits;txt2 = txt2 + "<br>" + "已使用" + ":" + cdkey.usedcredits;function fixwidth(str, width) {let length = width - str.length;while (length-- > 0) {str += '&nbsp;&nbsp;';}return str;}cdkey.records.forEach(x => {txt2 = txt2 + "<br>" + `名称:${fixwidth(x.name, 4)} &nbsp;&nbsp; 扣除积分:${fixwidth(x.used + "", 4)}  时间:${new Date(x.timestamp).toLocaleString()} `;});}txt = txt + "<br><br>" + txt2;}let option = {title: "用户信息/积分记录",btn: parseInt("0011", 2),}domooc.wxc.xcConfirm(txt, "custom", option);};$("#" + names.userinfo).click(showinfo);$("#" + names.cdkeyinfo).click(showinfo);$("#" + names.usermsg).click(function() {var txt = "留言板";domooc.wxc.xcConfirm(txt, domooc.wxc.xcConfirm.typeEnum.input, {title: "留言板",onOk: function(v) {userMessage(v);},onCancel: function(v) {}});});}},// {//     text: "收起面板",//     onclick: function (e) {//         let displaytext = $(this).children().text() === "<" ? "收起面板" : "<";//         $(this).children().text(displaytext);//         if (displaytext === "<") {//             $(this).siblings().hide();//             $("#domoocsidebar ul:eq(0)").hide();//             $(this).children().css("text-align", "right");//             $(this).css("width", "min-content");//             $(this).css("float", "right");//         } else {//             $(this).siblings().show();//             $("#domoocsidebar ul:eq(0)").show();//             $(this).children().css("text-align", "center");//             $(this).css("width", "auto");//             $(this).css("float", "inherit");//         }//         $(this).children().text(displaytext);//     }// }],refreshBtnList() {let btnlist = this.sidebar.children()[1];btnlist = $(btnlist);btnlist.empty();this.buttons.forEach(btn => {let li = $(`<li class="${names.domooc}"><a  style="line-height:2em;font-size:1.2em;font-weight:bold;padding:0;text-align:center;background-color:transparent;" ${btn.href ? 'href="' + btn.href + '"' : ""} target="${btn.href ? "_blank" : ""}">${btn.text}</a></li>`);if (typeof btn.onclick === "function") {li.click(btn.onclick);}if (typeof btn.class === "string") {li.addClass(btn.class);}if (btn.style) {li.css(btn.style);}btnlist.append(li);});$("li.domooc a:hover").css("background-color", "transparent");},addInfo(...msg) {msg.forEach(ele => {if (ele && (typeof ele !== "string") && ele.length) {for (let i = 0; i < ele.length; i++) {this.infoqueue.put(ele[i]);}} else if (typeof ele === "string" && ele.length) {this.infoqueue.put(ele);}});let temp = () => {let infolist = this.sidebar.children()[0];infolist = $(infolist);infolist.empty();let lis = [];for (let i = 0; i < this.infoqueue.length; i++) {let info = this.infoqueue.get(i);if (info) {let element;if (info.startsWith("<error>")) {let color = '#c3272b';info = info.replace("<error>", "");element = `<li class="${names.domoocinfo}"><span title="${info}" style="font-size:1.2em;font-weight:750;color: ${color};line-height:2.5em;">${info}</span></li>`;} else if (info.startsWith("<strong>")) {info = info.replace("<strong>", "");let color = 'RGB(85,185,41)';element = `<li class="${names.domoocinfo}"><span title="${info}" style="font-size:1.2em;font-weight:750;color: ${color};line-height:2.5em;">${info}</span></li>`;} else {element = `<li class="${names.domoocinfo}"><span title="${info}" style="font-size:1em;line-height:2em;">${info}</span></li>`;}let li = $(element);infolist.append(li);lis.push(li);}if (lis.length === this.infoqueue.length) {lis[0].fadeOut(1000, function() {});lis[this.infoqueue.length - 1].hide();lis[this.infoqueue.length - 1].fadeIn(1000, function() {});}}}if (!this.sidebar) {window.setTimeout(() => { temp() }, 3000);} else {temp()}},showServerMsg(msgobj) {if (!msgobj) {return;}if (msgobj.id) {if (GM_getValue(msgobj.id)) {return;}}var txt = (typeof msgobj === "string") ? msgobj : msgobj.message;let option = {title: msgobj.title ? msgobj.title : "您有一条新消息",btn: parseInt("0011", 2)}option.onOk = () => {if (typeof msgobj.onOk === "string") {window.open(msgobj.onOk);}if (msgobj.id) {GM_setValue(msgobj.id, "true")}}if (typeof msgobj.onCancel === "string") {option.onCancel = () => { window.open(msgobj.onCancel); }}domooc.wxc.xcConfirm(txt, "custom", option);},sidebar: null,searchbar: $(`    <div class="web-nav-right-part" style="position: absolute; z-index: 99999999;background-color:white;"><div class="u-baseinputui" style="height: 30px;"> <input type="text" id="domoocsearch"class="j-textarea inputtxt" style="width: 430px;float:left;" placeholder="搜索答案"><span class="u-icon-search2 j-searchBtn" style="font-size:20px;line-height:30px;"></span></div></div>`),sidebarOffset: function() {let box = $(`#${names.domoocbox}`);// let offset = sidebar.offset().top;// let search = this.searchbar;// search.offset({ top: $(window).scrollTop() + search.height() + 15, left: ($(window).width() - search.width()) / 2 });box.offset({ top: $(window).scrollTop() + this.top });},showQuizbank(quizbank) {if (!quizbank) {quizbank = domooc.quizbank;} else {domooc.quizbank = quizbank;}if (!quizbank) {courseCheck();return;}function showQuizs(jnames, names) {if (nopanel)return;let length = names.length;jnames.removeClass('f-thide');if (jnames.length > 0) {jnames.each(function() {var title = $(this)[0].innerText.domoocformat();clear = (text) => {return $(this).text().replace(/<题库答案数量:[\d]+?>/, "").replace("<fail>", "");}$(this).text()if (names.indexOf(title) > -1 && length) {length--;let idx = names.indexOf(title);$(this).attr("style", "color:RGB(85,185,41)");$(this).html(clear($(this).text()) + ' <br>' + `&lt;题库答案数量:${quizbank[idx].anscnt}&gt;`);} else {$(this).attr("style", "color:red");if ($(this).text().indexOf("<fail>") === -1) {$(this).text(clear($(this).text()) + "  <fail>");}}});window.clearInterval(intHandler);}}let intHandler = window.setInterval(() => {let ele = document.querySelectorAll('div.m-learnbox div.u-moocbl');let exist = false;if (ele.length) {for (let i = 0; i < ele.length; i++) {if (ele[i].innerText.indexOf("源课程") > -1) {ele = ele[i];exist = true;break;}}}if (ele && exist) {let spoc = ele.previousElementSibling;if (spoc) {let names = quizbank.map(x => x.isSourceCourse ? "" : x.name.domoocformat());let jnames = $(spoc).find("div.titleBox h4.j-name");showQuizs(jnames, names);}let source = ele.nextElementSibling;if (source) {let names = quizbank.map(x => x.isSourceCourse ? x.name.domoocformat() : "");let jnames = $(source).find("div.titleBox h4.j-name");showQuizs(jnames, names);}} else {let names = quizbank.map(x => x.isSourceCourse ? "" : x.name.domoocformat());let jnames = $("div.titleBox h4.j-name");showQuizs(jnames, names);}}, 500);},showVersion() {this.showServerMsg({title: "当前版本:1.8",message: "1. 优化了使用体验,现在会显示选项对应的内容" +"<br><br>2. 新增无界面模式,为避免用户误操作,需在脚本编辑器里自行设置" +"<br><br>3. 现在可以直接在面板里设置刷课和答题相应功能" +"<br><br>4. 新增找回cdkey功能" +"<br>之前充值的用户需先为cdkey设置密码才能使用(更多>>->找回cdkey->设置密码)"});},init: function() {let that = this;let trueinit = true;let _init = () => {that.domoocbox = $(`<div id="${names.domoocbox}" ${nopanel ? 'style="display:none;"' : ''}><div class="${names.domoocbar}">${dstrings.dbcfold}</div><div class="${names.domoocsidebar}"></div></div>`);$(parentDiv()).append(that.domoocbox);let sidebar = $(`div.${names.domoocsidebar}`);that.sidebar = sidebar;let infolist = $('<ul  style="padding:0 10px;"></ul>');let btnlist = $('<ul  style="padding:0 10px;"></ul>');sidebar.append(infolist);sidebar.append(btnlist);// $('body').append(that.searchbar);that.addInfo("");that.refreshBtnList();// if (domooc.hasPaper) {//     domooc.hasPaper = false;//     $('.' + domoocvideoname + ' > a').text("一键答题");// }// that.sidebarOffset();// that.searchbar.width(450);// that.searchbar.hide();window.onscroll = function() {that.sidebarOffset();}window.onresize = window.onscroll;let offset = GM_getValue('domoocbox');if (trueinit) {if (offset && offset !== "undefined") {that.top = offset.top;that.left = offset.left;} else {that.top = ($(window).height() - $(`#${names.domoocbox}`).height()) / 2;that.left = $(window).width() * 0.85 - $(`#${names.domoocbox}`).width();}}$(`#${names.domoocbox}`).offset({ top: that.top, left: that.left });that.dragBox(document.querySelector(`div.${names.domoocbar}`), document.querySelector(`#${names.domoocbox}`));trueinit = false;}_init();window.setInterval(() => {if (!document.querySelector(`#${names.domoocbox}`)) {_init();}}, 100);},}domooc[_view] = view;domooc[learnCourse] = {pageTypes: ['discuss', 'video', 'test', 'doc', 'text'],rate: 0,changeCnt: 0,loaded: true,handler: 0,eventHandlerInt: 0,started: false,unitId: null,textPages: null,maxRepeat: 15,repeat: 15,pageProcessed: false,setPlayRate(rate) {if (typeof rate === "number" && rate > 0 && rate <= 16) {let video = document.querySelector('video');if (video) {video.playbackRate = rate;}}},getCurrentPageType() {let current = this.getCurrentPosition();let type = null;this.pageTypes.forEach(t => {if (this.checkClass(current.content, t)) {type = t;}});return type;},getCurrentPosition() {let result = {};let temp = $('#courseLearn-inner-box div.j-chapter div.u-select div.j-up.f-thide').text().trim2();let chapter = $('#courseLearn-inner-box div.j-chapter div.u-select div.j-list').children();chapter.each(function() { if ($(this).text().trim2() === temp) result.chapter = $(this) });temp = $('#courseLearn-inner-box div.j-lesson div.u-select div.j-up.f-thide').text().trim2();let lesson = $('#courseLearn-inner-box div.j-lesson div.u-select div.j-list').children();lesson.each(function() { if ($(this).text().trim2() === temp) result.lesson = $(this) });if (!result.lesson) {result.lesson = $(lesson[0]);}result.content = $('#courseLearn-inner-box div.lscontent > ul > li.current');return result;},getCurrentPosition() {let result = {};let temp = $('#courseLearn-inner-box div.j-chapter div.u-select div.j-up.f-thide').text().trim2();let chapter = $('#courseLearn-inner-box div.j-chapter div.u-select div.j-list').children();chapter.each(function() { if ($(this).text().trim2() === temp) result.chapter = $(this) });temp = $('#courseLearn-inner-box div.j-lesson div.u-select div.j-up.f-thide').text().trim2();;let lesson = $('#courseLearn-inner-box div.j-lesson div.u-select div.j-list').children();lesson.each(function() { if ($(this).text().trim2() === temp) result.lesson = $(this) });if (!result.lesson) {result.lesson = $(lesson[0]);}result.content = $('#courseLearn-inner-box div.lscontent > ul > li.current');return result;},checkClass(ele, cla) {let span = ele.children('span.f-icon')[0];let result = false;if (span) {if (cla instanceof Array) {cla.forEach(str => {if (span.classList.value.indexOf(str) > -1) {result = true;}});} else if (typeof cla === "string") {result = span.classList.value.indexOf(cla) > -1}}return result;},_getNextContent(current, notnext) {return new Promise((resolve, reject) => {if (!current) {current = this.getCurrentPosition();}let next = current.content;if (!notnext) {next = current.content.next();}let flag = true;let that = this;if (!next[0]) {flag = false;this.getNextLesson(current).then((finish) => {if (!finish) {resolve(that._getNextContent(that.getCurrentPosition(), true));} else {resolve(null);}});}if (flag) {resolve(next);}});},_click(ele, resolve) {ele.click();let temp = window.setInterval(() => {if (this.loaded) {window.clearInterval(temp);resolve();}}, 99);},getNextLesson(current) {let that = this;return new Promise((resolve, reject) => {let next = current.lesson.next();if (!next[0]) {this.getNextChapter(current).then((finish) => {if (!finish) {that._click(that.getCurrentPosition().lesson, resolve);} else {resolve(finish);}});} else {that._click(next, resolve);}});},getNextChapter(current) {let that = this;return new Promise((resolve, reject) => {let next = current.chapter.next();if (!next[0]) {resolve(true);} else {that._click(next, resolve);}});},getNextContent() {let that = this;return new Promise((resolve, reject) => {let current = this.getCurrentPosition();this._getNextContent(current).then((next) => {if (next) {next.click();} else {window.clearInterval(that.eventHandlerInt);that.eventHandlerInt = 0;$('.' + domoocvideoname).click();view.addInfo("所有课程观看完成!", "觉得好用请捐赠作者,谢谢!");view.showServerMsg("所有课程观看完成!觉得好用请捐赠作者,谢谢!");}resolve();});});},async docfetch(page, unitId, finished) {return window.fetch(`/web/j/courseBean.saveMocContentLearn.rpc?csrfKey=${domooc.csrf}`, {body: `dto={"unitId":${unitId},"pageNum":${page},"finished":${finished},"contentType":3}`, // must match 'Content-Type' headerheaders: {'user-agent': 'Mozilla/4.0 MDN Example','content-type': 'application/x-www-form-urlencoded','edu-script-token': domooc.csrf},method: 'POST',}).then(function(response) {return response.json();})},handlePageEvents() {let that = this;let running = false;that.repeat = that.maxRepeat;let init = () => {that.repeat = that.maxRepeat;running = false;that.pageProcessed = false;};if (!that.eventHandlerInt) {that.eventHandlerInt = window.setInterval(() => {if (that.repeat-- < 0) {that.getNextContent().then(init);}if (that.pageProcessed || running) {return;}let current = that.getCurrentPosition();domooc.console.log({ current, repeat: that.repeat, running, that });if (that.checkClass(current.content, 'doc')) {if (!usersetting.learnCourse.doc) {that.getNextContent().then(init);return;}if (that.unitId && that.textPages) {running = true;let unitId = that.unitId;let textPages = that.textPages;that.unitId = 0;that.textPages = 0;for (let i = 0; i < textPages; i++) {let finished = ((i + 1) === textPages);window.setTimeout(async() => {let res = null;that.repeat = that.maxRepeat;let cnt = 3;do {res = await that.docfetch(i + 1, unitId, finished);} while (cnt-- && (!res || !res.result));if (finished) {running = false;that.pageProcessed = true;that.getNextContent().then(init);}}, i * 1000);}} else if (that.repeat < that.maxRepeat - 3) {view.showServerMsg("获取课件信息失败,<br>请关闭当前网页重新进入!");}} else if (that.checkClass(current.content, 'text')) {that.pageProcessed = true;window.setTimeout(() => {that.getNextContent().then(init);}, 2000);} else if (that.checkClass(current.content, 'video')) {if (!usersetting.learnCourse.video) {that.getNextContent().then(init);return;}let video = document.querySelector('video');document.querySelector('input.j-autoNext').checked = false;$('input.j-autoNext').hide();if (video) {that.setPlayRate(that.rate);if (typeof video.onended !== "function") {video.onended = () => {that.getNextContent().then(init);}}if (typeof video.ontimeupdate !== "function") {video.ontimeupdate = () => {that.repeat = that.maxRepeat;}}}} else if (that.checkClass(current.content, 'discuss')) {if (!usersetting.learnCourse.discuss) {that.pageProcessed = true;that.getNextContent().then(init);return;}running = true;let p = document.querySelectorAll('div.j-list div.j-content');let frames = document.getElementsByTagName('iframe');let contentBody = null;if (frames.length) {for (let i = 0; i < frames.length; i++) {let fd = frames[i].contentDocument;let pe = fd.querySelector('body.view p');if (pe) {contentBody = pe;break;}}}let content = '';if (p.length) {for (let i = 0; i < p.length; i++) {if (content.length < p[i].innerText.length) {content = p[i].innerText;}}contentBody.innerHTML = content + contentBody.innerHTML;let submit = document.querySelector('a.j-edit-btn.editbtn.u-btn-sm.u-btn-primary');if (submit) {submit.click();that.pageProcessed = true;}}window.setTimeout(() => {running = false;that.getNextContent().then(init);}, 4000);} else if (that.checkClass(current.content, 'test')) {if (!usersetting.learnCourse.test) {that.pageProcessed = true;that.getNextContent().then(init);return;}let submit = document.querySelector('a.u-btn.j-submit');if (submit && domooc.answerAll) {running = true;window.setTimeout(() => {if (submit.innerText === "提交") {domooc.answerAll = false;submit.click();that.pageProcessed = true;}window.setTimeout(() => {running = false;that.getNextContent().then(init);}, 2000);}, 2500);}}}, 2500);}},start() {domooc.console.log('video control start');this.handlePageEvents();document.onvisibilitychange = () => {view.addInfo("切换出当前页面后,你的观看时长将不会被记录!", "如果没有触发此提示,说明你的观看时长会被服务器记录。", "你可以多开浏览器以同时刷课,注意不要最小化。");}this.started = true;this.rate = usersetting.learnCourse.playrate;if (!this.handler) {$('div.m-lessonDetail').bind('DOMSubtreeModified', () => { domooc.learnCourse.changeCnt++ });this.handler = window.setInterval(() => {if (this.changeCnt > 0) {this.loaded = false;this.changeCnt = 0;} else {this.loaded = true;}if (!this.getCurrentPageType()) {this.terminate();}}, 1000);}},terminate() {$('div.m-lessonDetail').unbind('DOMSubtreeModified');window.clearInterval(this.handler);window.clearInterval(this.eventHandlerInt);let video = document.querySelector('video');this.rate = 0;this.changeCnt = 0;this.loaded = true;this.handler = 0;this.eventHandlerInt = 0;this.started = false;document.onvisibilitychange = null;view.addInfo(confuse('已关闭刷课功能'));$('input.j-autoNext').show();if (video) {video.onended = null;video.onpause = null;}}}domooc[learnCourse][setPage] = function(page) {this.textPages = page;};domooc[learnCourse][setUnitId] = function(unitId) {this.unitId = unitId;};window.setPlayRate = domooc.learnCourse.setPlayRate;})domooc.execAfterLoaded = function(fname, param) {return new Promise((resolve, reject) => {let handler = window.setInterval(() => {if (domooc.loaded) {window.clearInterval(handler);if (typeof fname === "string") {if (fname === answerClassTest) {let redo = document.querySelector('.submit.j-replay');if (redo && redo.style.display !== "none") {redo.click();}domooc[bindGetAnswer](param);domooc[fname](param.paper);} else {domooc[fname](param);}resolve();} else if (fname instanceof Array) {let func = domooc;let that = null;fname.forEach(f => {that = func;func = func[f];});func.call(that, param);resolve();}}}, 300);});};domooc.bindGetAnswer = function(obj) {let quizs = [];if (!(domooc.getAnswerquizs instanceof Array)) {domooc.getAnswerquizs = [];}if (obj) {if (obj.paper) {obj = obj.paper;}if (obj.objectiveQList && obj.objectiveQList.length) {quizs = obj.objectiveQList;} else if (obj.subjectiveQList && obj.subjectiveQList.length) {quizs = obj.subjectiveQList;}domooc.getAnswerquizs = quizs.map(x => 0);}$('div.j-title.title div.f-richEditorText.j-richTxt').each((idx, ele) => {let btn = $(`<p data-${names.qid}="${quizs[idx].id}" id="${domooc.getanswerbyidstr}" style="background:rgba(160,255,80,0);${usersetting.showanswerbtn || (document.location.href.indexOf('hw') > -1) ? '' : 'display:none;'}""><a class="f-fcgreen" style="color:#000" >${dstrings.showans}</a></p>`);btn.children().click(function() {domooc.getAnswerById(this, quizs[idx], idx);});$(ele).append(btn);});// domooc.hasPaper = true;// $('.' + domoocvideoname + ' > a').text("一键答题");}let hookhandler = window.setInterval(() => {if (window.dwr && window.dwr.engine && !domooc._remoteHandleCallback) {window.clearInterval(hookhandler);domooc._remoteHandleCallback = window.dwr.engine._remoteHandleCallback;window.dwr.engine._remoteHandleCallback = function(batchId, status, obj) {domooc._remoteHandleCallback(batchId, status, obj);domooc.console.log({ batchId, status, obj });if (!!obj) { //取得题目json;if ((obj.objectiveQList && obj.objectiveQList.length || obj.subjectiveQList && obj.subjectiveQList.length) && obj.submitStatus === 1) {domooc.getAnswerflag = false;domooc.quizpaper = obj;domooc.answerAll = false;domooc.execAfterLoaded(bindGetAnswer, obj).then(() => {if (usersetting.autogetanswer) {domooc.execAfterLoaded(getAnswer, obj);}});domooc.execAfterLoaded([_view, 'showServerMsg'], {id: "tips11",title: "使用提示",message: "如需自动答题,请编辑源代码设置autogetanswer为true<br>或点击右侧一键答题按钮"});} else if (obj.objectiveQList && obj.submitStatus === 2) {domooc.execAfterLoaded(analysisAnswer, obj);} else if (obj.paper && obj.paper.objectiveQList && obj.paper.objectiveQList.length) {domooc.quizpaper = obj.paper;domooc.answerAll = false;domooc.execAfterLoaded(bindGetAnswer, obj).then(() => {domooc.execAfterLoaded(answerClassTest, obj);});}if (obj.textPages) {domooc.execAfterLoaded([learnCourse, setPage], obj.textPages);}if (obj.unitId) {domooc.execAfterLoaded([learnCourse, setUnitId], obj.unitId);}} else if (obj === 0 && domooc.quizbank) {domooc.execAfterLoaded([_view, showQuizbank]);}};}}, 20);function loadxcComfirm($, window, domooc) {domooc.wxc = domooc.wxc || {};let names = {wxcname: genId(5),xc_layer: genId(6),popBox: genId(7),txtBox: genId(8),btnArea: genId(9),btnGroup: genId('a'),sgBtn: genId('n'),ok: genId('c'),cancel: genId('d'),verticalAlign: genId('x'),ttBox: genId('q'),tt: genId('l'),clsBtn: genId('u'),}let style = `<style type="text/css">/*垂直居中*/ \.${names.verticalAlign}{ vertical-align:middle; display:inline-block; height:100%; margin-left:-1px;}\.${names.wxcname} .${names.xc_layer}{position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: #666666; opacity: 0.5; z-index: 2147000000;}\.${names.wxcname} .${names.popBox}{position: absolute; background-color: #ffffff; z-index: 2147000001; width: max-content; height: max-content; border-radius: 5px; font-weight: bold; color: #535e66;}\.${names.wxcname} .${names.popBox} .${names.ttBox}{height: 30px; line-height: 30px; padding: 14px 30px; border-bottom: solid 1px #eef0f1;}\.${names.wxcname} .${names.popBox} .${names.ttBox} .${names.tt}{font-size: 18px; display: block; float: left; height: 30px; position: relative;}\.${names.wxcname} .${names.popBox} .${names.ttBox} .${names.clsBtn}{display: block; cursor: pointer; width: 12px; height: 12px; position: absolute; top: 22px; right: 30px; background: url(../img/icons.png) -48px -96px no-repeat;}\.${names.wxcname} .${names.popBox} .${names.txtBox}{margin: 40px 100px;  overflow: hidden;display:flex;margin:20px 40px}\.${names.wxcname} .${names.popBox} .${names.txtBox} .bigIcon{float: left; margin-right: 20px; width: 48px; height: 48px; background-image: url(../img/icons.png); background-repeat: no-repeat; background-position: 48px 0;}\.${names.wxcname} .${names.popBox} .${names.txtBox} textarea{float: left; width: 300px;  margin-top: 16px; line-height: 26px; }\.${names.wxcname} .${names.popBox} .${names.txtBox} textarea{width: 450px;height:200px;  border: solid 1px rgb(85,185,41);font-family: sans-serif; font-size: 18px; margin-top: 6px;}\.${names.wxcname} .${names.popBox} .${names.btnArea}{border-top: solid 1px #eef0f1;}\.${names.wxcname} .${names.popBox} .${names.btnGroup}{float: right;}\.${names.wxcname} .${names.popBox} .${names.btnGroup} .${names.sgBtn}{margin: 14px;}\.${names.wxcname} .${names.popBox} .${names.sgBtn}{display: block; cursor: pointer; float: left; width: 95px; height: 35px; line-height: 35px; text-align: center; color: #FFFFFF; border-radius: 5px;}\.${names.wxcname} .${names.popBox} .${names.sgBtn}.${names.ok}{background-color:rgb(85,185,41); color: #FFFFFF;}\.${names.wxcname} .${names.popBox} .${names.sgBtn}.${names.cancel}{background-color: rgb(248,248,248); color: #000;}\</style>`;$('body').append($(style));domooc.wxc.xcConfirm = function(popHtml, type, options) {if (nopanel)return;//按钮类型domooc.wxc.xcConfirm.btnEnum = {ok: parseInt("0001", 2), //确定按钮cancel: parseInt("0010", 2), //取消按钮okcancel: parseInt("0011", 2) //确定&&取消};//触发事件类型domooc.wxc.xcConfirm.eventEnum = {ok: 1,cancel: 2,close: 3};//弹窗类型domooc.wxc.xcConfirm.typeEnum = {info: "info",success: "success",error: "error",confirm: "confirm",warning: "warning",input: "input",custom: "custom"};var btnType = domooc.wxc.xcConfirm.btnEnum;var eventType = domooc.wxc.xcConfirm.eventEnum;let closeDefault = () => {// let onscroll = window.onscroll;// if (typeof window.onscroll === "function") {//     window.onscroll = onscroll();// }};var popType = {info: {title: "信息",icon: "0 0", //蓝色ibtn: btnType.ok},success: {title: "成功",icon: "0 -48px", //绿色对勾btn: btnType.ok},error: {title: "错误",icon: "-48px -48px", //红色叉btn: btnType.ok},confirm: {title: "提示",icon: "-48px 0", //黄色问号btn: btnType.okcancel},warning: {title: "警告",icon: "0 -96px", //黄色叹号btn: btnType.okcancel},input: {title: "请输入...",icon: "",btn: btnType.okcancel},custom: {title: "",icon: "",btn: btnType.ok}};var itype = type ? type instanceof Object ? type : popType[type] || {} : {}; //格式化输入的参数:弹窗类型var config = $.extend(true, {//属性title: "", //自定义的标题icon: "", //图标btn: btnType.ok, //按钮,默认单按钮//事件onOk: $.noop, //点击确定的按钮回调onCancel: $.noop, //点击取消的按钮回调onClose: $.noop, // 弹窗关闭的回调, 返回触发事件placeholder: null}, itype, options);let $txt = null;if (typeof popHtml === "string") {$txt = $("<p>").html(popHtml); //弹窗文本dom} else {$txt = $(popHtml);}var $tt = $("<span>").addClass(names.tt).text(config.title); //标题var icon = config.icon;var $icon = icon ? $("<div>").addClass("bigIcon").css("backgroundPosition", icon) : "";var btn = config.btn; //按钮组生成参数var popId = creatPopId(); //弹窗索引var $box = $("<div>").addClass(names.wxcname); //弹窗插件容器var $layer = $("<div>").addClass(names.xc_layer); //遮罩层var $popBox = $("<div>").addClass(names.popBox); //弹窗盒子var $ttBox = $("<div>").addClass(names.ttBox); //弹窗顶部区域var $txtBox = $("<div>").addClass(names.txtBox); //弹窗内容主体区var $btnArea = $("<div>").addClass(names.btnArea); //按钮区域var $ok = $("<a>").addClass(names.sgBtn).addClass(names.ok).text("确定"); //确定按钮var $cancel = $("<a>").addClass(names.sgBtn).addClass(names.cancel).text("取消"); //取消按钮var $input = $("<textarea>").addClass("inputBox"); //输入框$input.attr("rows", "4");$input.attr("cols", "60");if (config.placeholder) {$input.attr("placeholder", config.placeholder);} else if (qqgroup) {$input.attr("placeholder", "有问题请加交流群:" + qqgroup);}$input.css("margin", "auto");var $clsBtn = $("<a>").addClass(names.clsBtn); //关闭按钮//建立按钮映射关系var btns = {ok: $ok,cancel: $cancel};init();function init() {//处理特殊类型inputif (popType["input"] === itype) {$txt = $input;}creatDom();bind();}function creatDom() {if (popType["input"] === itype) {$txt = $input;}$popBox.append($ttBox.append($clsBtn).append($tt)).append($txtBox.append($icon).append($txt)).append($btnArea.append(creatBtnGroup(btn)));$box.attr("id", popId).append($layer).append($popBox);$(parentDiv()).append($box);// .append($box);let setPopOffset = () => {if ($popBox.width() > $(window).width() / 2) {$popBox.width($(window).width() / 2);}$popBox.offset({ top: $(window).scrollTop() + $(window).height() / 2 - $popBox.height() / 2, left: $(window).width() / 2 - $popBox.width() / 2 });};setPopOffset();// let onscroll = window.onscroll;// window.onscroll = () => {//     setPopOffset();//     if (typeof onscroll === "function") {//         onscroll();//         return onscroll;//     }// }}function bind() {//点击确认按钮$ok.click(doOk);//回车键触发确认按钮事件$(domooc).bind("keydown", function(e) {if (e.keyCode == 13) {if ($("#" + popId).length == 1) {doOk();}}});//点击取消按钮$cancel.click(doCancel);//点击关闭按钮$clsBtn.click(doClose);}//确认按钮事件function doOk() {var $o = $(this);var v = $.trim($input.val());let onOkResult;if ($input.is(":visible"))onOkResult = config.onOk(v);elseonOkResult = config.onOk();if (onOkResult !== false) {$("#" + popId).remove();closeDefault();config.onClose(eventType.ok);}}//取消按钮事件function doCancel() {var $o = $(this);config.onCancel();$("#" + popId).remove();closeDefault();config.onClose(eventType.cancel);}//关闭按钮事件function doClose() {$("#" + popId).remove();closeDefault();config.onClose(eventType.close);$(domooc).unbind("keydown");}//生成按钮组function creatBtnGroup(tp) {var $bgp = $("<div>").addClass(names.btnGroup);$.each(btns, function(i, n) {if (btnType[i] == (tp & btnType[i])) {$bgp.append(n);}});return $bgp;}//重生popId,防止id重复function creatPopId() {let i = name[Math.floor(Math.random() * name.length)] + (new Date()).getTime() + parseInt(Math.random() * 100000) + 'P';if ($("#" + i).length > 0) {return creatPopId();} else {return i;}}};};if (!!debug) {window.domooc = domooc;}}init(window, $, usersetting, GM_getValue, GM_setValue, GM_xmlhttpRequest, nopanel);
})();

有小伙伴说脚本不能用,
在这里插入图片描述
在这里统一回复一下:只要博主还在更新,就说明这个脚本还能用(如下图)。自行检查下自己的步骤
在这里插入图片描述
如果小博的文章对你有所帮助,欢迎点赞,关注,留言三连!!!谢谢了!!!😊😊😊

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. SpringBoot源码分析之-启动流程分析一(SpringApplication构造器)

    目录springboot入口类SpringApplication类简单介绍流程主要方法介绍WebApplicationType.deduceFromClasspath();getSpringFactoriesInstances(Class type);deduceMainApplicationClass(); springboot入口类SpringApplication类 run方法进去看到public static ConfigurableAppli…...

    2024/4/28 17:00:10
  2. Java理解可重入锁和非可重入锁

    1、可重入锁和不可重入的区别 可重入锁也叫递归锁,是在一个线程获取锁后,内部如果还需要获取锁,可以直接获取的锁(前提锁对象得是同一个对象或者class)。 不可重入锁也就是相反,线程获取锁后,内部不能再获取锁,由于之前已经获取过还没释放而阻塞,会导致线程死锁。 Ree…...

    2024/5/8 5:54:52
  3. 数据可视化pyecharts学习笔记---饼图

    基本图表–饼图 from pyecharts.charts import Pie 1、基本示例 from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.faker import Fakerpie = Pie() pie.add("",list(zip(Faker.choose(),Faker.values())),center=["35%&…...

    2024/5/7 20:08:34
  4. 数据结构 环形链表(约瑟夫环)

    package com.数据结构;import java.util.Scanner;public class 环形链表_约瑟夫环 {//有n个人围成一圈,顺序从1开始排号。从第m个人开始报数(从1到3报数),凡报到k的人退出圈子.// 问最后留下的是原来第几号的那位。要求用循环链表实现。//环形链表 (约瑟夫环) ----- 其实没…...

    2024/4/24 11:34:49
  5. SpringBoot零基础详解八:自定义starter

    八:自定义starter1:starter的原理和必要的概念1、这个场景需要使用到的依赖是什么?2、如何编写自动配置@Configuration //指定这个类是一个配置类 @ConditionalOnXXX //在指定条件成立的情况下自动配置类生效 @AutoConfigureAfter //指定自动配置类的顺序 @Bean //给容器…...

    2024/5/8 3:45:56
  6. nodemcu远程连接点亮小灯

    wifi.setmode(wifi.STATION) wifi.sta.config("CMCC-5tiu","123445") --手机热点的名称和密码 wifi.sta.connect() --接入手机热点 gpio.write(0, gpio.LOW) gpio.write(1, gpio.HIGH) cl = net.createConnection(net.TCP, 0) Tcp=0function ledPWM() …...

    2024/4/27 23:23:33
  7. Linux 文件阻塞跟非阻塞

    阻塞跟非阻塞都是属于文件的属性,并非调用函数的属性。 普通文件 ==> 非阻塞 终端 ==> 阻塞 可以通过open来设置对应打开文件的属性。 阻塞 #include <stdint.h> #include <string.h> #include <errno.h> #include <sys/types.h> #include <…...

    2024/4/24 11:34:50
  8. 欧拉函数--通式证明、线性筛分析、部分性质

    学习参考博客来自:自为风月马前卒、 DYT_B欧拉函数通式证明int phi(int n){int ans = n;for(int i=2; i*i<=n; i++){if(n%i==0){ans = ans/i*(i-1);while(n%i==0)n/=i;}}if(n>1)ans = ans/n*(n-1);return ans; }线性筛//写在前面 //对于欧拉函数有如下三条性质 p为素数 …...

    2024/4/24 11:34:52
  9. 解决pip、conda安装pytorch下载速度过慢或者源Http error的问题

    ubuntu系统下,用conda或者pip方式安装pytorch的时候会需要如下指令: pip install torch torchvision conda的: conda install pytorch torchvision cudatoolkit= cuda对应版本号 -c pytorch conda安装的时候经常会因为源网址的问题出现源地址没有对应的资源 pip安装的时候速…...

    2024/5/3 13:26:18
  10. 初等数论一

    初等数论整除性==定义1====定理1==最大公约数==定义2====定理2==**Euclidean算法****扩展Euclidean算法**==定理5====定理6====定理7==最小公倍数==定义3====定理8====定理9==素数==定义4====性质2====定理10====定理11====定理12==200以内素数==定理13== 整除性 定义1 对于整数…...

    2024/4/20 11:34:18
  11. 牛客网--15054--添加逗号

    题目描述: 对于一个较大的整数 N(1<=N<=2,000,000,000) 比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这 个数字每三位加一个逗号,它会变得更加易于朗读。 因此,这个数字加上逗号成如下的模样:980,364,535请写一个程序帮她完成这件事情 输入描…...

    2024/5/5 20:26:28
  12. Python-元组学习笔记(完)

    文章目录元组(tuple)元组的创建1. 通过`()`创建元组,小括号可以省略。2. 通过`tuple()`创建元组3. 使用`zip()`方法4. 推导式创建元组访问元组的元素1. 元组的元素不能修改2. 访问元组的元素和列表一样,只不过返回的仍然是元组对象元组的两个方法总结 元组(tuple) 元组属…...

    2024/4/17 18:43:45
  13. C语言 学生成绩管理

    早年练手作品,学生成绩管理 #include<stdio.h> #include<string.h> #include<conio.h>/*结构体*/ struct student {int classno;int no;char name[10];float cj1;float cj2;float cj3; }stud;struct student_1 {int classno;int no;char name[10];float cj1…...

    2024/5/4 15:59:22
  14. 对象字面量增强写法

    对象字面量const obj = {} // {} 表示字面量属性增强写法// ES5 const name = kobe; const age = 18; const height = 1.88;const obj = {name: name,age: age,height: height }// ES6 const name = kobe; const age = 18; const height = 1.88;const obj = {name,age,height }…...

    2024/4/24 11:34:51
  15. 牛客网--14682--求交集

    题目描述: 约数个数的和 输入描述: 给个n,求1到n的所有数的约数个数的和~ 输出描述: 输出一个整数,表示答案 输入: 2 3 1 3 1 2 3 输出: 1 3 题意: 题目描述 题解: 直接推出来的 代码: #include<cstdio> #include<cstring> #include<algorithm> #inc…...

    2024/4/25 19:48:51
  16. 六.兼容获取DOM元素

    获取当前页面所有ID项var oBox = document.getElementById(box),divList = oBox.getElementsByTagName(div); /** 1.首先获取当前文档中所有的HTML标签* 2.依次遍历这些元素标签对象,谁的ID等于HAHA,我们就把谁存储起来即可*/ function queryAllById(id) {//->基于通配符*…...

    2024/4/24 11:34:41
  17. spring boot 学习笔记(二)

    1.主程序类 @SpringBootApplication public class Mainprocess {public static void main (String args[]){//启动spring主程序SpringApplication.run(Mainprocess.class,args);} } @SpringBootApplication :spring boot应用标注在某个类上,说明这个类是spring boot 的主配置类…...

    2024/4/24 11:34:47
  18. 解决android studio从github上拉项目,下载慢或者爆红

    你是否在github上拉安卓项目时,总是打不开,现在我来帮你们解决 废话少说看图是不是敲简单...

    2024/5/5 15:33:04
  19. Mysql的死锁原因及解决方法

    mysql都有什么锁 MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁…...

    2024/4/24 11:34:38
  20. redis一主二从添加哨兵

    主从添加哨兵就从主从模式变更为了哨兵模式 主从搭建请参数链接: https://blog.csdn.net/qq_34987395/article/details/106604566 1、变更sentinel.conf文件的配置 daemonize yes #后台启动哨兵 sentinel monitor mymaster 192.168.237.144 6379 2 # mymaster是主哨兵名称 # 1…...

    2024/5/5 16:06:49

最新文章

  1. Redis之Linux下的安装配置

    Redis之Linux下的安装配置 Redis下载 Linux下下载源码安装配置 方式一 官网下载&#xff1a;https://redis.io/download ​ 其他版本下载&#xff1a;https://download.redis.io/releases/ 方式二&#xff08;推荐&#xff09; GitHub下载&#xff1a;https://github.com/r…...

    2024/5/8 6:30:19
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. mac安装nvm

    一、前景提示 1、保证自己的mac电脑上没安装node环境 2、保证自己的电脑上有安装git&#xff0c;不然下载nvm时会报错。git下载可以参考&#xff1a; 1&#xff09;佛系安装&#xff1a;通过提示下载 XCode 2&#xff09;brem安装 3&#xff09;终极大法&#xff1a;git官网下…...

    2024/5/7 23:35:01
  4. Go语言中如何实现继承

    完整课程请点击以下链接 Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间 Go语言中没有传统意义上的类和继承的概念&#xff0c;但可以通过嵌入类型&#xff08;embedded types&#xff09;来实现类似的功能。嵌入类型允许一个结构…...

    2024/5/5 8:37:47
  5. STM32-GPIO

    &#x1f913;&#x1f913;&#x1f913; 122.1 2.22.3 344.14.24.34.44.54.64.74.8 56788.18.299.19.2 STM32 第一个外设 1 对我们来说 和IO口没区别 ST公司非叫GPIO 2 2.1 第二个是超频了 F1 72M 这翻转就36 2.2 有cmos 和ttl两种数据手册里给出整个芯片最低电流为150ma 单…...

    2024/5/5 13:38:38
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57