在Chrome控制台重新加载后保留Javascript迭代

问题描述:

我在做迭代,并且在代码中迭代中的最后一个代码中,我放置了一个将重新加载页面的代码。在Chrome控制台重新加载后保留Javascript迭代

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

E.g

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

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

上面的代码可能无法正常工作,但我希望能解释我正在尝试做什么。

+0

当页面重新加载时,所有的JavaScript被重新加载。意思是所有变量都被删除。你可以将你的状态保存在一个cookie(或LocalStorage)中。 –

+0

@karthikr有几个选项,不要那么严格 – Ian

+0

@Ian和选项是? – karthikr

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

var i = parseInt(localStorage['i'])||0; 
localStorage['i'] = i+1; 
// do some stuff 
// and reload if you want 
+0

尽管使用'sessionStorage'可能会更有意义,因为它仅限于每个选项卡/窗口,如果此页面在同一浏览器中多次打开,则它们不会冲突:) – Ian

+0

谢谢。 它保持变量的值,但JavaScript停止不是? 我应该手动继续控制台吗? – batik

+0

是的,脚本停止了,所以你不能有一个for循环。我不确定你的意思是“手动继续控制台”。 –

您可以使用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_getValueGM_setValue在一些Tampermonkey数据存储功能的存储数据,所以它是可用的脚本运行的下一次。请注意,您需要使用@grant标题来使用这些功能。

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

运行一次后,Tampermonkey数据存储中的counter值设置为6,脚本将不会重新加载。如果你想重新加载页面五次,你将不得不编程重置计数器。