Auto-reload a specific webpage at a configurable interval
// ==UserScript==
// @name Automatically Refresh Webpage
// @namespace Automatically Refresh Webpage
// @description Auto-reload a specific webpage at a configurable interval
// @version 1.7
// @author aciid
// @match http://ENTER_YOUR_OWN_URL_OR_IP_HERE/*
// @supportURL https://greasyfork.org/en/scripts/491178
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
let intervalId = null;
let wasPaused = false; // Indicates if the script was paused due to hovering
let isScriptRunning = false; // Tracks whether the script is actively running or stopped
// Function to start reloading
function startReloading(interval) {
console.log(`Starting reload every ${interval / 1000} seconds.`);
if (intervalId !== null) clearInterval(intervalId); // Clear existing interval if any
intervalId = setInterval(() => {
console.log("Reloading page.");
window.location.reload();
}, interval);
isScriptRunning = true;
updateStatus('Running');
}
// Function to stop reloading
function stopReloading() {
if (intervalId !== null) {
clearInterval(intervalId);
console.log("Reload stopped.");
intervalId = null;
}
isScriptRunning = false;
updateStatus('Stopped');
}
// Function to update status displayed in UI
function updateStatus(status) {
document.getElementById('reloadStatus').textContent = `Status: ${status}`;
}
// Load settings from localStorage
const savedInterval = localStorage.getItem('autoReloadInterval') || 30000; // Default to 30 seconds
let isReloadingEnabled = localStorage.getItem('isReloadingEnabled') === 'true';
// UI setup
const reloadUI = document.createElement('div');
reloadUI.style = 'position: fixed; bottom: 20px; right: 20px; z-index: 10000; padding: 15px; background-color: #f0f0f0; border: 2px solid #ccc; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); font-family: Arial, sans-serif;';
reloadUI.innerHTML = `
<div style="font-size: 14px; margin-bottom: 8px;"><strong>Refresh Interval (seconds):</strong></div>
<div style="margin-bottom: 8px;">
<input type="number" id="reloadInterval" value="${savedInterval / 1000}" min="1" style="width: 60px; padding: 5px;">
</div>
<div style="margin-bottom: 8px;">
<button id="startReload" style="padding: 5px 10px;">Start</button>
<button id="stopReload" style="padding: 5px 10px;">Stop</button>
</div>
<div id="reloadStatus" style="font-size: 12px;">Status: ${isReloadingEnabled ? 'Running' : 'Stopped'}</div>
`;
document.body.appendChild(reloadUI);
// Pause logic on hover
reloadUI.addEventListener('mouseenter', function() {
if (intervalId !== null && isScriptRunning) { // Only pause if it's currently running
clearInterval(intervalId);
intervalId = null;
wasPaused = true; // Mark as paused due to hover
updateStatus('Paused (mouse on UI)');
}
});
// Unpause logic
reloadUI.addEventListener('mouseleave', function() {
if (wasPaused && isScriptRunning) { // Only unpause if it was paused due to hover and the script was running before
const interval = Math.max(1, parseInt(document.getElementById('reloadInterval').value, 10)) * 1000;
startReloading(interval);
wasPaused = false; // Reset pause state
}
});
// Start/Stop buttons
const startButton = document.getElementById('startReload');
const stopButton = document.getElementById('stopReload');
const intervalInput = document.getElementById('reloadInterval');
startButton.onclick = function() {
const interval = Math.max(1, parseInt(intervalInput.value, 10)) * 1000;
localStorage.setItem('autoReloadInterval', interval);
localStorage.setItem('isReloadingEnabled', 'true');
isReloadingEnabled = true; // Update the running state
startReloading(interval);
};
stopButton.onclick = function() {
localStorage.setItem('isReloadingEnabled', 'false');
isReloadingEnabled = false; // Ensure the script is marked as not running
stopReloading();
};
// Automatically start reloading if enabled
if (isReloadingEnabled) {
startReloading(savedInterval);
}
})();