您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Opens websites at scheduled times (checks once daily), config via separate page.
// ==UserScript== // @name Scheduled Website Opener (Daily Check - Config Page) // @namespace your-namespace // @version 0.3 // @description Opens websites at scheduled times (checks once daily), config via separate page. // @author You // @match *://*/* // @grant GM_getValue // @grant GM_setValue // @license MIT // ==/UserScript== (function() { 'use strict'; const SCHEDULE_KEY = 'scheduledWebsitesDaily'; const LAST_CHECK_KEY = 'lastScheduleCheck'; function loadSchedules() { const storedSchedules = GM_getValue(SCHEDULE_KEY); return storedSchedules ? JSON.parse(storedSchedules) : []; } function getLastCheck() { return GM_getValue(LAST_CHECK_KEY, 0); } function setLastCheck() { GM_setValue(LAST_CHECK_KEY, Date.now()); } function formatTime(date) { const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); return `${hours}:${minutes}`; } function checkSchedules() { const now = new Date(); const currentTime = formatTime(now); const currentDay = now.getDay(); // 0 (Sunday) to 6 (Saturday) const schedules = loadSchedules(); schedules.forEach(schedule => { if (schedule.days.includes(currentDay) && schedule.time === currentTime) { window.open(schedule.url, '_blank'); // Optionally, you could remove the schedule after it's executed once: // GM_setValue(SCHEDULE_KEY, JSON.stringify(schedules.filter(s => s !== schedule))); } }); setLastCheck(); setTimeout(checkDaily, 24 * 60 * 60 * 1000); } function checkDaily() { const now = new Date(); const lastCheck = getLastCheck(); const timeSinceLastCheck = now.getTime() - lastCheck; if (timeSinceLastCheck >= 24 * 60 * 60 * 1000) { checkSchedules(); } else { setTimeout(checkDaily, (24 * 60 * 60 * 1000) - timeSinceLastCheck); } } // Start the daily check interval checkDaily(); })();