// ==UserScript==
// @name V2
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @description try to take over the world!
// @author S0919756
// @match *
// ==/UserScript==
// 這是一個全局變量,用來記錄請求的狀態
var globalRequestState = {
isRequesting: false, // 這告訴我們是否有請求正在進行
requestDetails: null // 這裡會存儲請求的細節
};
// 這個函數用來發送請求
function sendRequest(details) {
globalRequestState.isRequesting = true; // 標記我們正在發送請求
globalRequestState.requestDetails = details; // 記錄請求的細節
window.postMessage({ type: 'supportRequest', details: details }, '*'); // 向後台發送請求
}
// 這是一個全局變量,用來記錄請求的狀態
var globalRequestState = {
isRequesting: false, // 這告訴我們是否有請求正在進行
requestDetails: null // 這裡會存儲請求的細節
};
// 這個函數用來發送請求
function sendRequest(details) {
globalRequestState.isRequesting = true; // 標記我們正在發送請求
globalRequestState.requestDetails = details; // 記錄請求的細節
handleRequest(details); // 在此處理請求,而不是向後台發送請求
}
// 這個函數用來處理請求
function handleRequest(_details) {
globalRequestState.isRequesting = false; // 更新全局變量,表示請求已經完成
globalRequestState.requestDetails = null; // 清空請求細節
}
// 當頁面加載完成時,這個函數會被自動調用
window.addEventListener('DOMContentLoaded', (event) => {
console.log('頁面加載完成');
if (!globalRequestState.isRequesting) { // 如果沒有請求正在進行
sendRequest('需要的支援細節'); // 發送一個新的請求
}
});
for (let value of Object.values(websiteData)) {
count = count + 1;
if (value.url.includes(window.location.hostname)) {
websiteDataValues.url = value.url;
login = value.login;
password = value.password;
break;
}
}
// 從websiteData數組中獲取下一個Url
async function getNextUrl() {
// 如果到達數組的結尾,則回到開頭
if (count >= websiteData.length) {
websiteDataValues.nextUrl = websiteData[0].url;
} else {
websiteDataValues.nextUrl = websiteData[count].url;
}
// 如果有覆蓋下一個Url的情況
if (websiteDataValues.overrideNextUrl) {
websiteDataValues.nextUrl = websiteDataValues.overrideNextUrl;
}
// 在進入下一個url之前進行Ping測試以檢查網站是否正常
pingTest(websiteDataValues.nextUrl);
}
var isNextUrlReachable = false;
// 從網站獲取下一個Url
function pingTest(websiteUrl) {
console.log(websiteUrl);
GM_xmlhttpRequest({
method: "GET",
url: websiteUrl,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
timeout: 5000,
onload: function() {
// 網站可以訪問
isNextUrlReachable = true;
},
onerror: function() {
count = count + 1;
getNextUrl();
},
ontimeout: function() {
count = count + 1;
getNextUrl();
},
});
}