在Chrome控制台重新加载后保留Javascript迭代
问题描述:
我在做迭代,并且在代码中迭代中的最后一个代码中,我放置了一个将重新加载页面的代码。在Chrome控制台重新加载后保留Javascript迭代
如何保持JavaScript迭代运行后重新加载并继续状态?
E.g
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
标题来使用这些功能。
我们获得计数器的值并将其增加1。然后,如果计数器小于5,我们重新加载页面。这会重新加载页面五次,就像在您的示例中一样。
运行一次后,Tampermonkey数据存储中的counter
值设置为6,脚本将不会重新加载。如果你想重新加载页面五次,你将不得不编程重置计数器。
当页面重新加载时,所有的JavaScript被重新加载。意思是所有变量都被删除。你可以将你的状态保存在一个cookie(或LocalStorage)中。 –
@karthikr有几个选项,不要那么严格 – Ian
@Ian和选项是? – karthikr