diff --git a/main.user.js b/main.user.js index 24f6be3..a0e402f 100644 --- a/main.user.js +++ b/main.user.js @@ -27,7 +27,7 @@ window.addEventListener("keydown", event => { const oldAwnsersURL = GM_getValue(URL_STORAGE_KEY); let newAwnsersURL = prompt("Please input the answer url (itexamanswers.net)", oldAwnsersURL); GM_setValue(URL_STORAGE_KEY, newAwnsersURL); - fetchData(newAwnsersURL); + awnserData = await window.fetchAwnsers(newAwnsersURL); break; case "n": @@ -100,78 +100,4 @@ function matchAwnser(textA, textB) { textA = textA.replace(replaceRegex, ""); textB = textB.replace(replaceRegex, ""); return (textA === textB); -} - -function fetchData(awnserURL = ""){ - GM_xmlhttpRequest({ - method: "GET", - url: awnserURL, - headers: { - "Content-Type": "text/html" - }, - onload: function(response) { - awnserImgs = new Map(); - const results = []; - const parser = new DOMParser(); - const virtDom = parser.parseFromString(response.responseText, "text/html"); - - let answersDom = virtDom.querySelector(".pf-content"); - if (!answersDom) { - answersDom = virtDom.querySelector(".thecontent"); - } - - let index = -1; - for (let childDom of answersDom.children) { - index++; - - if (childDom.tagName === "P" || childDom.tagName === "STRONG" ) { - - // maybe a question question - let innerDom = childDom.querySelector("strong"); - if (innerDom === null) { - if(!childDom.textContent){ - continue; - } - innerDom = childDom; - }; - - const textContent = innerDom.textContent.trim(); - const matches = textContent.match(/^[0-9]+\. (.*)$/); - if (matches !== null) { - const questionText = matches[1]; - - // most likely a question - let nextChild = answersDom.children[index + 1]; - - if (nextChild.tagName === "P"){ - nextChild = answersDom.children[index + 2]; - }; - - if (nextChild === null) continue; - - if (nextChild.tagName === "UL") { - // most likely the awnser - const answers = []; - for (let answerDom of nextChild.querySelectorAll("strong")) { - let answerText = answerDom.textContent.trim(); - if (answerText.endsWith("*")) { - answerText = answerText.substring(0, answerText.length - 1); - } - answers.push(answerText); - } - - results.push({ - question: questionText, - answers: answers - }); - } - } - - } - } - awnserData = results; - GM_log(results); - GM_log(awnserImgs); - } - }); } \ No newline at end of file