我是小白,最近在学着写一个法宣在线网站自动学习的脚本,法宣的规则是每天学习够5分钟得5分,每天最多得50分,每做一个练习题得10分,每天最多50分,一个练习题可以重复做重复得分,目前自动学习的功能已经完美实现,关于做练习题我想实现的功能是我先找答案做题,当点击了答案就自动把题目和答案写入本地的json文件,后面再遇到和这个一样的题目,就会从本地的json文件中匹配,然后自动点击正确答案,现在点击答案获取数据已经实现,但是在把数据写入本地json文件上遇到了问题,在网上找了好多方法都没有解决,刚开始用了FileSaver.js,但这个只是保存文件,后又在网上看到nodejs的fs.writeFile可以解决,就安装了nodejs,但我在脚本里写const fs = require("fs")就报错了,说require未定义,也就是脚本没有nodejs环境,在网上查了好多都不知道怎么办,也没有关于油猴和nodejs相关的话题,试了在本地写一个js文件,然后用@require引入js文件也不行,实在没招了,所以请教大佬,这个怎么来实现,能实现吗,数据上传服务器暂时没考虑,之前买过一年的服务器做过影视站,但服务器已经到期了,写脚本期间还遇到一个问题,到现在也没解决,也是在做练习这个页面,我用了document.onreadystatechange = function() { if (document.readyState == "complete") {} }还有window.onload,里面的代码无论怎么都不会执行,网上说是网页一样造成了多个绑定,但是我试了addEventListener("load",function(){})也没用,下面是所有的脚本代码,麻烦大佬给看看
`// ==UserScript==
// @name 法宣在线自动学习
// @namespace http://tampermonkey.net/
// @version 1.3
// @description try to take over the world!
// @author Amen
// @match http://www.faxuanyun.com/bps/frame/t/frame.html?
// @match http://www.faxuanyun.com/sps/courseware/t/courseware_1_t.html?
// @match http://www.faxuanyun.com/sps/exercises/t/exercies_3_t.html?*
// @icon https://www.google.com/s2/favicons?sz=64&domain=faxuanyun.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Your code here...
document.onreadystatechange = function(){
if (document.readyState == "complete") {
//第一个页面进入课程
if (document.location.href.indexOf("http://www.faxuanyun.com/bps/frame/t/frame.html") > -1 ) {
var courses = document.querySelectorAll("#page .kc_img");
var courses_sum = courses.length;
var course_num = Math.ceil(Math.random()*courses_sum) - 1; //在所有课程中随机点击一个进入
var course_study = courses[course_num];
var point = Number(document.querySelector("#todypoint").innerHTML);
if (point < 50) {
course_study.click();
setTimeout(function() {
location.reload();
}, 1000*60*5+1000*10);
}
}
//第二个页面开始学习
if (document.location.href.indexOf("http://www.faxuanyun.com/sps/courseware/t/courseware_1_t.html") > -1 ) {
var courses_sub = document.querySelectorAll("#kejmc-box-id a");
var courses_sub_sum = courses_sub.length;
var course_sub_num = Math.ceil(Math.random()*courses_sub_sum) - 1; //在课程列表中随机点击一个学习
var course_sub_study = courses_sub[course_sub_num];
course_sub_study.click();
setTimeout(function() {
var start_study = document.querySelector("#inBtnDiv > a");
start_study.click();
}, 3000);
setInterval(function() {
var study_time = document.querySelector("#ware_time_num").innerHTML;
if (study_time == "00:05:01") {
var exit_btn = document.querySelector("#exitCourse");
exit_btn.click();
setTimeout(function() {
var exit_study = document.querySelectorAll("#exitBtnDiv > a")[1];
exit_study.click();
}, 2000);
}
}, 1000);
}
}
}
//第三个页面做练习题,目前只能做《中华人民共和国反有组织犯罪法》这一个课程
if (document.location.href.indexOf("http://www.faxuanyun.com/sps/exercises/t/exercies_3_t.html") > -1 ) {
setTimeout(function() {
var title = document.querySelector("#ti_title").innerText.replace(/\d、/,""); //题目
console.log(title);
var options = document.querySelectorAll("#ti_item input"); //选项
const fs = require("fs");
//从选项中获得选择的答案
for (var i=0; i<options.length; i++) {
(function(i) {
var select = options[i];
select.addEventListener("click", function() {
var ans = document.querySelectorAll("#ti_item > li")[i].innerText;
console.log(ans);
//将题目和答案写入本地json文件
var tiku = {"题目":title, "答案":ans};
tiku = JSON.stringify(tiku, 4);
console.log(tiku);
//fs.writeFile("E:\study\exam\题库.json", tiku, err=> {
//if(err) {
//console.log("写入出错了");
//}
//}
})
})(i);
}
//var next_btn = document.querySelector("#ulPage > a:last-child");
}, 2000);
}
})();`