123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- (function () {
- // 从url里面读取参数 type
- const urlParams = new URLSearchParams(window.location.search);
- const type = urlParams.get("type");
- // 如果type为空,则警告lert("请输入type参数")
- if (!type) {
- alert("请输入type参数");
- return;
- }
- let urlMap = {
- tri: ["http://192.168.3.36:9002/", "https://tri.tianyunperfect.cn/"],
- };
- const urls = urlMap[type];
- function checkUrl(url) {
- return new Promise((resolve) => {
- const startTime = performance.now();
- const img = new Image();
- let isResolved = false;
- img.onload = function () {
- if (!isResolved) {
- isResolved = true;
- resolve({
- url: url,
- accessible: true,
- responseTime: performance.now() - startTime,
- });
- }
- };
- img.onerror = function () {
- if (!isResolved) {
- isResolved = true;
- resolve({
- url: url,
- accessible: true,
- responseTime: performance.now() - startTime,
- });
- }
- };
- setTimeout(() => {
- if (!isResolved) {
- isResolved = true;
- resolve({
- url: url,
- accessible: false,
- responseTime: 99999,
- });
- }
- }, 5000);
- const timestamp = new Date().getTime();
- img.src = url + `favicon.ico?t=${timestamp}`;
- });
- }
- function showStatus(message, isError = false) {
- let statusDiv = document.getElementById("url-checker-status");
- if (!statusDiv) {
- statusDiv = document.createElement("div");
- statusDiv.id = "url-checker-status";
- statusDiv.style.cssText = `
- position: fixed;
- top: 10px;
- right: 10px;
- padding: 10px;
- background: ${
- isError ? "rgba(255, 0, 0, 0.8)" : "rgba(0, 0, 0, 0.8)"
- };
- color: white;
- border-radius: 5px;
- z-index: 999999;
- font-family: Arial, sans-serif;
- font-size: 14px;
- max-width: 300px;
- word-break: break-word;
- `;
- document.body.appendChild(statusDiv);
- }
- statusDiv.textContent = message;
- return statusDiv;
- }
- async function checkAllUrls() {
- const statusDiv = showStatus("正在检测网络连接...");
- try {
- const results = await Promise.all(urls.map((url) => checkUrl(url)));
- const accessibleUrls = results.filter((result) => result.accessible);
- console.log("检测结果:", results);
- if (accessibleUrls.length === 0) {
- showStatus("所有地址均无法访问!", true);
- setTimeout(() => statusDiv.remove(), 3000);
- return;
- }
- const fastestUrl = accessibleUrls.reduce((prev, current) =>
- prev.responseTime < current.responseTime ? prev : current
- );
- showStatus(
- `正在跳转到最快地址: ${fastestUrl.url}\n响应时间: ${Math.round(
- fastestUrl.responseTime
- )}ms`
- );
- setTimeout(() => {
- window.location.href = fastestUrl.url;
- statusDiv.remove();
- }, 1500);
- } catch (error) {
- console.error("检测过程出错:", error);
- showStatus("检测过程出错,请稍后重试", true);
- setTimeout(() => statusDiv.remove(), 3000);
- }
- }
- checkAllUrls();
- })();
|