【发布时间】:2018-10-24 22:33:22
【问题描述】:
此代码的目的是在等待 1 秒或 5 秒后刷新页面,具体取决于随机变量。但是,下面的代码使它可以在每次等待 1 秒后刷新,或者在每次等待 5 秒后刷新。
如何使每次刷新时的刷新等待时间为 1 秒或 5 秒?
// ==UserScript==
// @name google.com
// @namespace John Galt
// @description Basic Google Hello
// @match *^https://www.google.com/$*
// @version 1
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @grant GM_xmlhttpRequest
// @run-at document-end
// ==/UserScript==
//*****************************************START OF SET_TIMEOUT
(function ($) {
'use strict';
var interval;
if (Math.floor(Math.random() * 2) == 0) { interval = 1000; }
else { interval = 5000; }
if (window == window.top) {
var body = $('body').empty();
var myframe = $('<iframe>')
.attr({ src: location.href })
.css({ height: '95vh', width: '100%' })
.appendTo(body)
.on('load', function () {
setTimeout(function () {
myframe.attr({ src: location.href });
}, interval);
});
}
})(jQuery);
//*****************************************END OF SET_TIMEOUT
【问题讨论】:
-
@ScottMarcus 我已经编辑了代码,并尝试将其放入其中,但仍然无法正常工作。我是不是放错地方了?
-
问题是当您将
iframe指向当前文档时,包含iframe的文档仅被加载一次(这就是您看到使用相同间隔的原因一遍又一遍),当iframe在其中加载相同的文件时,它为interval生成的值与控制iframe的加载不同。 -
@ScottMarcus 哦。那么有没有办法修复它以使其改变?
-
请问,您将当前页面加载到
iframe中的原因是什么,而不是仅仅在同一窗口中重新加载当前页面? -
@ScottMarcus 哦。我使用 iFrame 的原因是因为有时当我刷新页面时,它会给我 503 状态错误,如果它给我 503 状态错误,那么脚本就会停止运行。即使在使用 iframe 时遇到 503 错误,我也能够保持脚本运行。
标签: javascript refresh settimeout userscripts tampermonkey