如何在不重置 tampermonkey 脚本的情况下重新加载页面?

Vũ *_*yễn 4 javascript jquery tampermonkey

我正在使用 javascript 在网站中创建一些自动化操作。我知道当我们点击刷新按钮时,chrome 控制台会被重置,所以我尝试通过 Tampermonkey 来管理它,以便脚本可以从 chrome 控制台单独运行。

但我的问题仍然存在,重新加载页面时,tampermonkey 用户脚本仍然会重置。你能帮我解决这些问题吗?非常感谢!p/s 我是这个编码学科的业余爱好者,所以如果你们能帮助我,我将不胜感激:)

我的脚本的一部分如下所示:

var $balance = $("#balance"),
  $statusBar = $(".progress #banner");

function getStatus() {
  var a = $statusBar.text();
  if (hasSubString(a, "Rolling in")) return "waiting";
  if (hasSubString(a, "***ROLLING***")) return "rolling";
  if (hasSubString(a, "rolled")) {    
var b = parseInt(a.split("rolled")[1]);
return lastRollColor = getColor(b), "rolled"
  }
return "unknown"
}
   function getBalance() {
  return parseInt($balance.text())
}
Run Code Online (Sandbox Code Playgroud)

Sjo*_*erd 7

当页面重新加载时,TamperMonkey 脚本确实也会重置。但是,您可以在重新加载之间保存状态,以便脚本可以从中断处继续。

您可以使用GM_getValueGM_setValue函数将数据存储在某些 Tampermonkey 数据存储中,以便下次脚本运行时可用。请注意,您需要使用@grant标头才能使用这些功能。

例如,以下脚本保留重新加载之间的值counter

// ==UserScript==
// @name         HttpBin reload
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Reload something a couple of times
// @author       Sjoerd
// @match        https://httpbin.org/get
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(function() {
    'use strict';

    var i = GM_getValue('counter', 0);
    GM_setValue('counter', i + 1);

    if (i < 5) {
        location.reload();
    }
})();
Run Code Online (Sandbox Code Playgroud)