NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name FileRefresh // @version 1.0.1 // @description Allows you to refresh all Scripts, Link tags (including stylesheets), Img tags or all 3 on the page without full refresh. Also adds a timestamp to force cache reset. To refresh you can either press the buttons added in the menu or press Alt + F5 for the refresh all option // @author Michel Jonkman // @copyright 2018, Michel Jonkman // @license MIT // @include * // @require http://code.jquery.com/jquery-3.2.1.min.js // @grant GM_registerMenuCommand // ==/UserScript== GM_registerMenuCommand('Refresh Javascript', JSRefresh, 'r'); GM_registerMenuCommand('Refresh Link tags(stylesheets)', CSSRefresh, 'r'); GM_registerMenuCommand('Refresh Images', ImgRefresh, 'r'); GM_registerMenuCommand('Refresh All above', all, 'r'); $(document).keydown(function (e) { var evtobj = window.event ? event : e; if (evtobj.keyCode === 116 && evtobj.altKey) { all(); } }); function JSRefresh() { $('script').each(function (index, value) { var extra = ''; $(value.attributes).each(function (index, node) { if (node.nodeName === 'src') { var src; if (node.nodeValue.indexOf('refreshTimestamp=') >= 0) { src = node.nodeValue.substr(0, node.nodeValue.lastIndexOf("=")); src = src + '=' + Math.floor(Date.now() / 1000); } else if (node.nodeValue.indexOf('?') < 0) { src = node.nodeValue + '?refreshTimestamp=' + Math.floor(Date.now() / 1000); } else { src = node.nodeValue + '&refreshTimestamp=' + Math.floor(Date.now() / 1000); } extra += ' ' + node.nodeName + '="' + src + '"'; } else { extra += ' ' + node.nodeName + '="' + node.nodeValue + '"'; } }); $(value).replaceWith('<script' + extra + '></script>'); }); } function CSSRefresh() { $('link').each(function (index, value) { var extra = ''; $(value.attributes).each(function (index, node) { if (node.nodeName === 'href') { var src; if (node.nodeValue.indexOf('refreshTimestamp=') >= 0) { src = node.nodeValue.substr(0, node.nodeValue.lastIndexOf("=")); src = src + '=' + Math.floor(Date.now() / 1000); } else if (node.nodeValue.indexOf('?') < 0) { src = node.nodeValue + '?refreshTimestamp=' + Math.floor(Date.now() / 1000); } else { src = node.nodeValue + '&refreshTimestamp=' + Math.floor(Date.now() / 1000); } extra += ' ' + node.nodeName + '="' + src + '"'; } else { extra += ' ' + node.nodeName + '="' + node.nodeValue + '"'; } }); $(value).replaceWith('<link' + extra + '>'); }); } function ImgRefresh() { $('img').each(function (index, value) { var extra = ''; $(value.attributes).each(function (index, node) { if (node.nodeName === 'src') { var src; if (node.nodeValue.indexOf('refreshTimestamp=') >= 0) { src = node.nodeValue.substr(0, node.nodeValue.lastIndexOf("=")); src = src + '=' + Math.floor(Date.now() / 1000); } else if (node.nodeValue.indexOf('?') < 0) { src = node.nodeValue + '?refreshTimestamp=' + Math.floor(Date.now() / 1000); } else { src = node.nodeValue + '&refreshTimestamp=' + Math.floor(Date.now() / 1000); } extra += ' ' + node.nodeName + '="' + src + '"'; } else { extra += ' ' + node.nodeName + '="' + node.nodeValue + '"'; } }); $(value).replaceWith('<img' + extra + '>'); }); } function all() { JSRefresh(); CSSRefresh(); ImgRefresh(); }