2

我正在做迭代,在迭代中的最后一个代码中,我放置了一个将重新加载页面的代码。

如何在重新加载后保持 JavaScript 迭代运行并继续状态?

例如

for(i=0;i<5;i++) {
    document.reload();
}

运行上述代码后,代码停止,控制台重新加载。

上面的代码可能不起作用,但我希望它能解释我想要做什么。

4

2 回答 2

3

您需要将状态存储在未重置的位置。localStorage是理想的解决方案。

var i = parseInt(localStorage['i'])||0;
localStorage['i'] = i+1;
// do some stuff
// and reload if you want
于 2013-05-15T15:04:33.390 回答
2

您可以使用 TamperMonkey 来完成此操作。TamperMonkey 脚本在重新加载页面时也会被重置。但是,由于它们能够存储数据并在每次页面加载时运行,因此您可以实现在页面重新加载时持续存在的行为。这是一个例子:

// ==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();
    }
})();

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

我们得到计数器的值并将其加一。然后,如果计数器小于 5,我们会重新加载页面。这会重新加载页面五次,就像在您的示例中一样。

运行一次后,counterTampermonkey 数据存储中的值设置为 6,脚本将不再重新加载。如果您想再重新加载页面五次,则必须编写一些程序来重置计数器。

于 2017-03-01T11:30:23.867 回答