网页定时刷新插件,可后台
本帖最后由 Kls673M 于 2024-7-1 08:15 编辑忘记说了,这是浏览器的插件脚本,用油猴或者暴力猴新建脚本就可以了。
进入网页后按F7开启或者关闭,按键有提示,原始30秒刷新可自行修改。
4-19,增加个随机数,避免固定时间刷新
// ==UserScript==
// ==UserScript==
// @name 自动刷新插件
// @namespace http://tampermonkey.net/
// @version 1.8
// @description自动刷新页面,如果页面空白则使用时间戳来避免缓存
// @author You
// @match *://*/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
// 定义基础刷新时间间隔(毫秒)
const BASE_REFRESH_INTERVAL = 60 * 1000; // 30秒
// 定义随机数的最大范围(毫秒)
const RANDOM_MAX = 10 * 1000; // 10秒
// 函数:生成随机刷新间隔
function getRandomInterval() {
return Math.floor(Math.random() * RANDOM_MAX) + 1; // 1ms 到 10秒之间的随机数
}
// 函数:检查页面是否空白
function isPageBlank() {
return document.body.innerText.trim() === '' && document.body.childNodes.length === 0;
}
// 函数:自动刷新页面
function autoRefresh() {
console.log("Auto-refresh triggered.");
const refreshPage = () => {
if (isPageBlank()) {
console.log("Page is blank, refreshing with cache busting.");
const currentUrl = window.location.href;
const noCacheUrl = currentUrl + (currentUrl.indexOf('?') === -1 ? '?' : '&') + 'nocache=' + new Date().getTime();
window.location.replace(noCacheUrl); // 使用时间戳刷新页面,避免缓存
} else {
console.log("Page is not blank.");
}
};
refreshPage();
}
// 函数:开启或关闭自动刷新
function toggleAutoRefresh() {
const isAutoRefreshEnabled = window.name === 'autoRefreshEnabled';
const button = document.getElementById('autoRefreshButton');
if (isAutoRefreshEnabled) {
window.name = ''; // 清除页面标识
clearTimeout(window.autoRefreshTimeout); // 清除定时器
button.textContent = '启用自动刷新';
} else {
window.name = 'autoRefreshEnabled'; // 设置页面标识
autoRefresh(); // 立即刷新一次
setRandomInterval(); // 设置随机刷新间隔
button.textContent = '正在持续刷新中…';
}
}
// 函数:设置随机刷新间隔
function setRandomInterval() {
const randomInterval = getRandomInterval();
window.autoRefreshTimeout = setTimeout(autoRefresh, BASE_REFRESH_INTERVAL + randomInterval);
console.log(`Next refresh in ${Math.floor(BASE_REFRESH_INTERVAL / 1000) + Math.floor(randomInterval / 1000)} seconds.`);
}
// 创建按钮并添加到页面
const button = document.createElement('button');
button.id = 'autoRefreshButton';
button.textContent = window.name === 'autoRefreshEnabled' ? '正在持续刷新中…' : '启用自动刷新';
button.style.position = 'fixed';
button.style.bottom = '20px';
button.style.right = '20px';
button.style.zIndex = '10000';
button.style.padding = '10px 20px';
button.style.border = '1px solid #ccc';
button.style.backgroundColor = '#f9f9f9';
button.style.cursor = 'pointer';
button.addEventListener('click', toggleAutoRefresh);
document.body.appendChild(button);
// 监听键盘事件,按下 F7 键时切换自动刷新状态
document.addEventListener('keydown', function(event) {
if (event.key === 'F7') {
toggleAutoRefresh();
}
});
// 页面加载时检查页面标识,并根据状态执行相应的操作
if (window.name === 'autoRefreshEnabled') {
setRandomInterval();
}
})(); 我之前就是简单的3秒刷新
(function() {
setTimeout(function(){
location.reload();
}, 3000); // 3秒后刷新页面
})(); 感谢您分享您的思路和经验,让我从您的经验中受益匪浅。 感谢分享 感谢分享原理,但还是用带UI的插件比较方便 写到background.js中更可靠
学习了,感谢分享 代码思路清晰,命名规范,有机会用下看看 感谢分享 学习了,感谢分享