Greasy Fork is available in English.
EasyWJX附加脚本,问卷星问卷保存正在填写的答案,刷新后自动补充上次已填写过的内容,可实现问卷星企业版“断点续答”类似的功能
// ==UserScript==
// @name 【首发】EasyWJX附加-保存问卷星已填写答案,实现企业版断点续答;刷新保留答案;实时保存答案;自动恢复答案;
// @namespace http://tampermonkey.net/
// @version 1.0
// @description EasyWJX附加脚本,问卷星问卷保存正在填写的答案,刷新后自动补充上次已填写过的内容,可实现问卷星企业版“断点续答”类似的功能
// @author MelonFish
// @match https://ks.wjx.top/*/*
// @match http://ks.wjx.top/*/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
// @grant none
// @license GNU GPLv3
// ==/UserScript==
var ran = 1;
(function() {
'use strict';
if (ran == 1) {
ran++;
// Your code here...
setTimeout(function () {
writeAllAnswer() //加载之后就自动填写保存过的答案
},1000)
function writeAnswer_radio(id, answer){
var all_html = document.querySelectorAll('.field.ui-field-contain')[id]
var radios = all_html.querySelectorAll('.ui-radio')
if (radios.length!=0) {
if (answer.ques_id == id) {
for (var j=0; j<radios.length; j++) {
var this_radio = radios[j];
if (this_radio.querySelector('span input').value == answer.answer) {
this_radio.click()
return 'success'
}
}
}
}
return 'not_radio'
}
function writeAllAnswer() {
var localAns_ls = getLocalStorage(getwjid())
if (localAns_ls == null) {
return 'no_localstorage'
}
for (var i=0; i<localAns_ls.length; i++) {
if (localAns_ls[i].kind == 'radio') {
var ret = writeAnswer_radio(i, localAns_ls[i])
}
}
}
function getAnswer_radio(id) {
//var id = parseInt(str_id);
var all_html = document.querySelectorAll('.field.ui-field-contain')[id]
var checked_radio = all_html.querySelector('.ui-radio.checked')
if (checked_radio) {
// 这里返回两个内容,一个是value,一个是结果
return [checked_radio.querySelector('span input').value, 'success']
}
return [0, 'fail']
}
function getAllAnswer(){
var all_ques_html = document.querySelectorAll('.field.ui-field-contain')
var answer_ls = []
for (var i=0; i<all_ques_html.length; i++) {
try {
var [ans,status] = getAnswer_radio(i)
}catch {
var [ans,status] = [0, 'fail']
}
if (status != 'fail') {
answer_ls.push({ques_id: i, answer: ans, kind: 'radio'})
}
}
return answer_ls
}
function saveAnswerToLocal() {
var answer_ls = getAllAnswer()
if (answer_ls.length==0) {
return false
}
var wj_id = getwjid()
localStorage.setItem('easywjx_localans_'+wj_id, JSON.stringify(answer_ls))
console.log(answer_ls)
return true
}
function getwjid() {
return window.location.pathname.replace('/vm/', '').replace('.aspx', '')
}
function getLocalStorage(wj_id) {
return JSON.parse(localStorage.getItem('easywjx_localans_'+wj_id))
}
function sleep(time) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve()
}, time * 1000)
})
}
setTimeout(async function () {
while(true){
await sleep(1)
saveAnswerToLocal()
await sleep(1)
}
}, 2000)
}
})();