您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
An advanced USO Script Updater
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/3636/11010/%5BTS%5D%20USO-Updater.js
- // ==UserScript==
- // @name [TS] USO-Updater
- // @namespace TimidScript
- // @description An advanced USO Script Updater
- // @usage Give credit to original author and link
- // @exclude *
- // @version 1.0.11 (8080)
- // ==/UserScript==
- /* Information
- ********************************************************************************************
- Copyright © TimidScript
- TimidScript's Homepage: http://userscripts.org:8080/users/100610
- Script's Homepage: http://userscripts.org:8080/scripts/show/159301
- ----------------------------------------------
- Description
- ----------------------------------------------
- USO-Updater is an advance script updater that provides more control than the one provided by
- GreaseMonkey.
- Press "Ctrl+Alt+U" to bring up Update Menu
- For information on how to use this script please visit:
- http://userscripts.org:8080/scripts/show/159301
- Though no longer anything like the original, this script was based on "AEG AutoUpdater"
- and released under original license: http://creativecommons.org/licenses/by-nc-sa/3.0/
- Original Script: http://userscripts.org:8080/scripts/show/75442/
- ----------------------------------------------
- Version History
- ----------------------------------------------
- 1.0.11
- - Removed duplicated notice to service provider
- 1.0.10
- - Show your appreciation message added
- - USO-Updater Link Added
- - @exclude * instead of @include
- 1.0.9
- - Bug Fix: Asynchronous, delayed checking to fix issues with "@run-at document-start", which
- fails due to waiting for document to load.
- 1.0.8
- - Counter for iForm resize added.
- - Added Comments
- 1.0.7
- - Syntax Fix
- - To ease the load on userscript.org the default check interval was increased from 2 days to 5
- - Increase delay before resize to 1000ms
- 1.0.6
- - Bug Fix: Now checks if document is loaded first. Issue caused by "document-start" metatag.
- 1.0.5
- - Bug Fix: Did not set the infoBox text innerHTML
- 1.0.4
- - Background colour for the iframe's document body is set to white.
- - iframe size is set after a timeout delay.
- - Added a header and changed the colour of the USO-Updater menu
- 1.0.3
- - Changed the GM saved values to something more unique.
- 1.0.2
- - @updateinfo has become versioninfo
- - Displays if versions are the same in update window
- 1.0.1
- - Initial Release
- *****************************************************************************************************/
- var Counter = 0;
- var USOUpdater =
- {
- currentMetaData: null,
- newMetaData: null,
- checkInterval: 5,
- updateWindow: 0,
- ID: null,
- //Checks if online USOVersion number is same
- check: function (force) {
- if (this.checkUpdateNeeded() || force) {
- console.info("Checking for update for: " + this.currentMetaData["name"]);
- GM_xmlhttpRequest({
- method: "GET",
- url: "http://userscripts.org:8080/scripts/source/" + this.currentMetaData["uso:script"] + ".meta.js",
- //url: "http://blue/uso/script/meta" + this.currentMetaData["uso:script"] + ".meta.js",
- onload: function (response) {
- USOUpdater.newMetaData = USOUpdater.parseMeta(response.responseText);
- var newVersion = USOUpdater.newMetaData['uso:version'];
- if (force || (newVersion !== undefined &&
- USOUpdater.currentMetaData !== undefined &&
- USOUpdater.currentMetaData['uso:version'] !== undefined &&
- Number(newVersion) > Number(USOUpdater.currentMetaData['uso:version']))) {
- USOUpdater.showUpdateWindow(USOUpdater.newMetaData);
- }
- }
- });
- }
- },
- //Checks if online check is needed by checking last time online check was made
- checkUpdateNeeded: function () {
- this.checkInterval = GM_getValue("USO-Updater: CheckInterval", this.checkInterval);
- if (this.checkInterval == 0) return;
- var now = Math.round(new Date().getTime() / 1000); // was milliseconds
- var lastCheck = GM_getValue('USO-Updater: LastCheck', 0);
- GM_setValue('USO-Updater: LastCheck', now); // update
- //console.log(now > lastCheck + this.checkInterval * 86400);
- return now > lastCheck + this.checkInterval * 86400;
- },
- //Parse through the script metadata
- parseMeta: function (raw_metadata) {
- var lines = raw_metadata.split('\n');
- var metadata = {};
- var that = this;
- for (var i = 0; i < lines.length; i++) {
- lines[i].replace(/\s*\/\/\s*@([^ ]+)\s+(.+)/, function (all, key, value) {
- key = key.toLowerCase();
- metadata[key] = value;
- switch (key) {
- case "interval":
- if (!isNaN(value) && value > 0 && value < 8) value = GM_setValue("USO-Updater: CheckInterval", GM_getValue("USO-Updater: CheckInterval", value));
- break;
- }
- });
- }
- return metadata;
- },
- getCurrentMeta: function () {
- this.currentMetaData = this.parseMeta(GM_getResourceText('meta'));
- this.ID = USOUpdater.currentMetaData["uso:script"] + new Date().getTime();
- //console.log(USOUpdater.ID);
- },
- //Shows update window
- showUpdateWindow: function () {
- if (document.getElementById("updateWindow")) return;
- if (!USOUpdater.newMetaData) {
- USOUpdater.check(true);
- return;
- }
- var iframe = document.createElement("iframe");
- iframe.id = "updateWindow";
- iframe.setAttribute("style", "position:fixed; right: 15px; bottom: 15px; text-align:center; z-index: 9999;");
- iframe.onload = function () {
- iDoc = iframe.contentDocument || iframe.contentWindow.document;
- iDoc.body.innerHTML = '<div style="width: 500px; background-color: #ECF6D9; border: 5px ridge; padding: 5px 5px 0 5px;"><div style="text-align: center; border: 1px ridge #808080; padding: 5px;"><span id="cVersion" style="font-weight: bold;">USO-Updater</span><span style="font-size: small;">(1.0.1)</span><a target="_blank"><img alt="home" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABW0lEQVR42mNkwAECAoNZGBkYVgKZCv8ZGFw2rF/7Hps6RmyCvn7+TIwMjIuAstFggf8MJ/4z/HfZvGnjV6IM8Pb2nQakMtGE9wBN8tm6dctPvAZ4eHh1AAXLsRkM9Mo6IBm+Y8f2P1gNcHN1rwBS7Qz4wYL///8n796z6x+KAc5OzkAnM05jIAr8n7h3394CuAEO9g7AwGJcjCtMcBjScODggUZGWxtbb6C+DUARFuI1ww3JZrSxslEEsuSB/nIH0hVE6lzAyMi4EEi/gTvZwsw8AUjNJ9KAxhOnTjagBKKpsQlJBpw+ewbVACMDQxQDGEHhwshwEeJVoBcZ/icgG3DuwnlUAwx09dBdkHjh8qUFUDkHILUf2QCgHKoBulraGAZcvnZ1AVQOwwCgHKoBWuoaGAZcu3ljAVQOwwCgHKoB6iqqIEW7gJgVZsDNO7cXIMnBDPgPlQNFIwMAOj56D6356V8AAAAASUVORK5CYII=" onmouseover="this.style.backgroundColor=\'#FF0\';" onmouseout="this.style.backgroundColor=null;" /></a><div style="text-align: left; font-size: small; color: gray;">Show your appreciation for the script\'s author by writing a <a id="usoSReview">review</a> and becoming a <a id="usoSFan">fan</a>.</div></div><div style="width: auto; background-color: #D5DBCF; border: 1px ridge #808080;"><fieldset style="margin-bottom: 5px;"><legend style="color: #07770D; font-weight: bold;"><span>New Version: </span><span id="nVersion" style="color: #000;">USO-Updater</span><span style="font-size: small;">(1.0.2 BETA)</span></legend><div id="infoBox" style="padding: 5px; background-color: #FFF; border: 1px ridge #808080;">No version information provided</div><div id="warnBeta" style="background-color: #D4C6D7; padding: 0 5px 0 5px; border: 1px ridge #808080; display: none;"><label style="color: #000;">WARNING: New version is a BETA release</label></div><div id="warnAlpha" style="background-color: #D4C6D7; padding: 0 5px 0 5px; border: 1px ridge #808080; display: none;"><label style="color: #F00;">WARNING</label><label style="color: #000;">: New version is an ALPHA release</label></div></fieldset></div><div><form id="USOUpdaterForm"><label>Check for update<select id="intervalLength"><option>never</option><option>everyday</option><option>every 2 days</option><option>every 3 day</option><option>every 4 days</option><option>every 5 day</option><option>every 6 days</option><option>every 7 days</option></select></label><input type="submit" name="update" value="Update" onclick="this.parentNode.name = this.name;" style="float: right" /><input type="submit" name="cancel" value="Cancel" onclick="this.parentNode.name = this.name;" style="float: right" /></form></div></div>'
- + '<div style="border: 1px ridge #808080; text-align: center; width:100%; font: bold;">(Press "Ctrl+Alt+U" to access this window)</div>'
- + '<div style="text-align: left; font-size:small; color:gray; margin-left: 10px;">Service provided by <a href="http://userscripts.org:8080/scripts/show/159301">USO-Updater script.</a></div>';
- var el = iDoc.getElementById("cVersion");
- el.textContent = USOUpdater.currentMetaData["name"];
- el.nextElementSibling.textContent = "(" + USOUpdater.currentMetaData["version"] + ")";
- el = iDoc.getElementById("nVersion");
- el.textContent = USOUpdater.newMetaData["name"];
- el.nextElementSibling.textContent = "(" + USOUpdater.newMetaData["version"] + ")";
- iDoc.getElementById("usoSReview").href = "http://userscripts.org:8080/scripts/reviews/" + USOUpdater.currentMetaData["uso:script"];
- iDoc.getElementById("usoSFan").href = "http://userscripts.org:8080/scripts/fans/" + USOUpdater.currentMetaData["uso:script"];
- try {
- if (USOUpdater.currentMetaData['uso:version'] === USOUpdater.newMetaData['uso:version']) el.previousElementSibling.textContent = "Same Version: ";
- }
- catch (err) { };
- if (USOUpdater.newMetaData["versioninfo"]) iDoc.getElementById("infoBox").innerHTML = USOUpdater.newMetaData["versioninfo"];
- el = iDoc.getElementById("intervalLength");
- el.selectedIndex = USOUpdater.checkInterval;
- el.onchange = function () { USOUpdater.checkInterval = el.selectedIndex; GM_setValue("USO-Updater: CheckInterval", USOUpdater.checkInterval); };
- try {
- iDoc.getElementById("warnBeta").style.display = (USOUpdater.newMetaData["version"].match(/beta/gi)) ? null : "none";
- }
- catch (err) { };
- try {
- iDoc.getElementById("warnAlpha").style.display = (USOUpdater.newMetaData["version"].match(/alpha/gi)) ? null : "none";
- }
- catch (err) { };
- iDoc.body.setAttribute("style", "background-color:white;");
- iframe.style.width = (iDoc.body.firstElementChild.offsetWidth + 15) + "px";
- iframe.style.height = (iDoc.body.scrollHeight) + "px";
- //iframe.style.width = (iDoc.body.scrollWidth) + "px";
- //iframe.style.height = (iDoc.body.firstElementChild.offsetHeight + 20) + "px";
- //Sometimes the resize fails. Small delay before resizing should fix it.
- var intervalID = setInterval(function (iframe, iDoc) {
- iframe.style.width = (iDoc.body.firstElementChild.offsetWidth + 15) + "px";
- iframe.style.height = (iDoc.body.scrollHeight) + "px";
- Counter++;
- if (Counter == 10)
- {
- clearInterval(intervalID);
- }
- }, 250, iframe, iDoc);
- iDoc.getElementsByTagName("a")[0].href = "http://userscripts.org:8080/scripts/show/" + USOUpdater.currentMetaData["uso:script"];
- iDoc.getElementById("USOUpdaterForm").onsubmit = USOUpdater.formsumbit;
- }
- document.body.appendChild(iframe);
- },
- /*
- Meant to show Update History but due USO server overload currently not implemented
- addToHistory: function (metaData) {
- //http://userscripts.org:8080/scripts/version/35445/566329.user.js
- //http://userscripts.org:8080/scripts/version/35445/566329.meta.js
- },
- */
- //Opens Update Window
- formsumbit: function (e) {
- if (e.target.name == "update") {
- //console.log("Update window open");
- //window.open("http://userscripts.org:8080/scripts/source/" + USOUpdater.currentMetaData["uso:script"] + ".user.js", "_target");
- window.open("http://userscripts.org:8080/scripts/source/" + USOUpdater.currentMetaData["uso:script"] + ".user.js", "_self");
- }
- document.body.removeChild(document.getElementById("updateWindow"));
- },
- //Adds menu option to the USO Update Menu that is accessed through Ctrl+Alt+U.
- //This only appears if there is more than one active script that utilises the script.
- menuItemAdd: function () {
- var UpdaterMenu = document.getElementById("USOUpdaterMenu");
- if (!UpdaterMenu) {
- var UpdaterMenu = document.createElement("div");
- UpdaterMenu.id = "USOUpdaterMenu";
- UpdaterMenu.setAttribute("style", "z-index: 9999; position: fixed; top: 15px; right: 15px; display: none; background-color: #F00; padding: 10px; border: 5px solid #000;");
- var header = document.createElement("div");
- header.textContent = "USO-Updater Menu";
- header.setAttribute("style", "text-align:center; color:white;font-weight:bold; margin-bottom:5px;");
- UpdaterMenu.appendChild(header);
- var btn = document.createElement("input");
- btn.type = "button";
- btn.value = "Exit";
- btn.setAttribute("style", "display: block; width: 100%; margin-top: 10px;");
- btn.onclick = function () { UpdaterMenu.style.display = "none"; };
- UpdaterMenu.appendChild(btn);
- }
- var btn = document.createElement("input");
- btn.type = "button";
- btn.value = USOUpdater.currentMetaData["name"] + " (" + USOUpdater.currentMetaData["version"] + ")";
- btn.name = USOUpdater.ID;
- btn.setAttribute("style", "display: block; width: 100%;");
- btn.onclick = function (e) {
- //console.log(USOUpdater.ID, USOUpdater.currentMetaData["name"]);
- document.getElementById("USOUpdaterMenu").style.display = "none";
- if (USOUpdater.ID == e.target.name)
- USOUpdater.showUpdateWindow();
- };
- UpdaterMenu.insertBefore(btn, UpdaterMenu.lastElementChild);
- document.body.appendChild(UpdaterMenu);
- },
- //Captures Key presses. (Ctrl+Alt+U)
- keydown: function (e) {
- var key = e.keyCode;
- //console.log(USOUpdater.currentMetaData['uso:version'], USOUpdater.newMetaData['uso:version']);
- if (e.ctrlKey & e.altKey & e.keyCode == 85) {
- e.stopImmediatePropagation(); //No need for this.
- var updaterMenu = document.getElementById("USOUpdaterMenu");
- if (updaterMenu.getElementsByTagName("input").length > 2) {
- updaterMenu.style.display = null;
- var updateWindow = document.getElementById("updateWindow")
- if (updateWindow) document.body.removeChild(updateWindow);
- }
- else USOUpdater.showUpdateWindow();
- }
- }
- };
- if (window.self === window.top)
- {
- setTimeout(function ()
- {
- var interval = setInterval(
- function ()
- {
- if (document.readyState != "loading") //interactive complete
- {
- clearInterval(interval);
- USOUpdater.getCurrentMeta();
- USOUpdater.menuItemAdd();
- document.onkeydown = USOUpdater.keydown;
- USOUpdater.check();
- }
- }
- , 500);
- }, 500);
- }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址