【问题标题】:How to reload page without resetting tampermonkey script?如何在不重置 Tampermonkey 脚本的情况下重新加载页面?
【发布时间】:2016-03-28 01:40:06
【问题描述】:

我正在使用 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())
}

【问题讨论】:

    标签: javascript jquery tampermonkey


    【解决方案1】:

    当页面重新加载时,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();
        }
    })();
    

    【讨论】:

    • 这似乎在页面间持续存在。例如。假设您有一个在fakesite.it* 上运行的脚本,并且您在fakesite.it/food 上设置了计数器并访问fakesite.it/eat,似乎没有发生重新加载。或者,如果您想稍后再次访问 fakesite.it/food,则不会发生重新加载。
    【解决方案2】:

    您可以尝试将要保存的任何内容添加到页面的 localStorage 中,当您需要刚刚保存的任何内容时,您可以从 localStorage 获取它

    这里有 2 个命令可以做到这一点:

    1.localStorage.setItem(keyName, keyValue);

    2.localStorage.getItem(keyName);

    有关更多信息,请查看以下 2 个链接:

    https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem

    https://developer.mozilla.org/en-US/docs/Web/API/Storage/getItem

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-02
      • 2010-12-22
      • 1970-01-01
      • 2012-02-23
      • 2013-08-20
      • 2011-10-22
      • 2021-07-17
      • 1970-01-01
      相关资源
      最近更新 更多