显示中国保密在线考试答案的脚本,用黄色突出正确选项
// ==UserScript==
// @name 显示中国保密在线考试答案
// @namespace https://github.com/jiang-taibai/show_baomi_answer
// @version v1.0.4-2024-05-31
// @description 显示中国保密在线考试答案的脚本,用黄色突出正确选项
// @author CoderJiang
// @match http://www.baomi.org.cn/*
// @match https://www.baomi.org.cn/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=baomi.org.cn
// @grant GM_xmlhttpRequest
// @run-at document-start
// @license MIT
// ==/UserScript==
(function () {
'use strict';
function getOptionIndex(option) {
return option.charCodeAt(0) - 'A'.charCodeAt(0);
}
function getAnsIndex(jsonObject) {
const typeList = jsonObject.data.typeList;
const answers = [];
typeList.forEach(type => {
type.questionList.forEach(question => {
const ans = question.answer
const ansIndex = getOptionIndex(ans);
answers.push(ansIndex);
});
});
return answers
}
function displayAnswers(answers) {
const quesOptionsBoxes = document.querySelectorAll('.ques_options-box');
for (let i = 0; i < answers.length; i++) {
const quesOptionsBox = quesOptionsBoxes[i];
const ansIndex = answers[i];
const option = quesOptionsBox.querySelectorAll('label')[ansIndex];
option.style.backgroundColor = '#abc89a';
}
}
const originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
if (url.includes("/portal/main-api/v2/activity/exam/getExamContentData.do")) {
console.debug(url)
const examId = url.split('examId=')[1].split('&')[0];
const randomId = url.split('randomId=')[1];
const apiUrl = `https://www.baomi.org.cn/portal/main-api/v2/activity/exam/getExamContentData.do?examId=${examId}&randomId=${randomId}`;
GM_xmlhttpRequest({
method: "GET",
url: apiUrl,
onload: function (response) {
if (response.status >= 200 && response.status < 300) {
const answers = getAnsIndex(JSON.parse(response.responseText));
displayAnswers(answers);
} else {
console.debug('API Request Failed:', response.statusText);
}
}
});
}
originalOpen.apply(this, arguments)
}
})();