我正在做迭代,在迭代中的最后一个代码中,我放置了一个将重新加载页面的代码。
如何在重新加载后保持 JavaScript 迭代运行并继续状态?
例如
for(i=0;i<5;i++) {
document.reload();
}
运行上述代码后,代码停止,控制台重新加载。
上面的代码可能不起作用,但我希望它能解释我想要做什么。
我正在做迭代,在迭代中的最后一个代码中,我放置了一个将重新加载页面的代码。
如何在重新加载后保持 JavaScript 迭代运行并继续状态?
例如
for(i=0;i<5;i++) {
document.reload();
}
运行上述代码后,代码停止,控制台重新加载。
上面的代码可能不起作用,但我希望它能解释我想要做什么。
您需要将状态存储在未重置的位置。localStorage
是理想的解决方案。
var i = parseInt(localStorage['i'])||0;
localStorage['i'] = i+1;
// do some stuff
// and reload if you want
您可以使用 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,我们会重新加载页面。这会重新加载页面五次,就像在您的示例中一样。
运行一次后,counter
Tampermonkey 数据存储中的值设置为 6,脚本将不再重新加载。如果您想再重新加载页面五次,则必须编写一些程序来重置计数器。